147 | | The win32 installer for Python 2.5 has the same combination of pysqlite/sqlite versions and exhibits the same problem: |
148 | | |
149 | | {{{ |
150 | | #!python |
151 | | Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32 |
152 | | Type "help", "copyright", "credits" or "license" for more information. |
153 | | >>> from sqlite3 import dbapi2 |
154 | | >>> print dbapi2.version_info |
155 | | (2, 3, 2) |
156 | | >>> print dbapi2.sqlite_version_info |
157 | | (3, 3, 4) |
158 | | }}} |
159 | | |
160 | | The same test works flawlessly on the following platforms: |
161 | | * Python 2.4.4 + pysqlite2 2.3.2 + sqlite3 3.3.8 (GNU/Debian Linux 4.0) |
162 | | * Python 2.5 + builtin pysqlite2 ''aka'' sqlite3 2.3.2 + sqlite3 3.3.8 (GNU/Debian Linux 4.0) |
163 | | * Python 2.5.2 + builtin pysqlite2 ''aka'' sqlite3 2.3.2 + sqlite3 3.5.9 (GNU/Debian Linux Sid as of Jun 29, 2008) |
164 | | this may be thanks to the fact that on these platforms the shared sqlite3 library being used by the pysqlite2 (Python 2.4) or sqlite3 (Python 2.5) Python modules is the system wide one and so it hasn't been frozen at 3.3.4. |
| 147 | The win32 installer for Python 2.5 ships the same combination of pysqlite/sqlite versions and exhibits the same problem. The tests were also run under some other Windows- and Linux-based scenarios. |
| 148 | |
| 149 | Summarizing: |
| 150 | |
| 151 | || '''Platform''' || '''Python version''' || '''pysqlite2 version''' || '''sqlite version''' || '''works?''' || '''Notes''' || |
| 152 | || win32 || 2.4.4 || 2.3.0 (external) || 3.3.6 || YES || || |
| 153 | || Debian Linux || 2.4.4 || 2.3.2 (external) || 3.3.8 || YES || || |
| 154 | || win32 || 2.5 || 2.3.2 (built-in sqlite3)|| 3.3.4 || NO || || |
| 155 | || Debian Linux || 2.5 || 2.3.2 (built-in sqlite3)|| 3.3.8 || YES || || |
| 156 | || win32 || 2.5.2 || 2.3.2 (built-in sqlite3)|| 3.3.4 || NO || || |
| 157 | || win32 || 2.5.2 || 2.4.1 (external) || 3.5.2 || YES || '''*''' || |
| 158 | || Debian Linux || 2.5.2 || 2.3.2 (built-in sqlite3)|| 3.5.9 || YES || || |
| 159 | |
| 160 | As is can be seen, the test under Linux were always successful, this may be due to the fact that on these platforms the shared sqlite3 library being used by the pysqlite2 (Python 2.4) or sqlite3 (Python 2.5) Python modules is the system wide one and so it hasn't been frozen at 3.3.4. |
168 | | As sqlite/pysqlite development continues, the pysqlite project keeps publishing new win32 binary installers for Python 2.5. Latest as of today June 29, 2008 is version 2.4.1 ({{{pysqlite-2.4.1.win32-py2.5.exe}}}) that uses sqlite version 3.5.2: |
169 | | |
170 | | {{{ |
171 | | #!python |
172 | | >>> from pysqlite2 import dbapi2 |
173 | | >>> print dbapi2.version_info |
174 | | (2, 4, 1) |
175 | | >>> print dbapi2.sqlite_version_info |
176 | | (3, 5, 2) |
177 | | >>> |
178 | | }}} |
179 | | |
180 | | The error doesn't show itself when running the tests if one manages to force Django to use this newer version of pysqlite (see below). This seems to indicate that something was fixed on sqlite between versions 3.3.4 and 3.5.2 (see http://sqlite.org/changes.html). |
| 164 | As the table above shows, version 3.3.4 of sqlite seems to be affected by this bug whilst version 3.3.6 isn't (see http://sqlite.org/changes.html for possible hints). |
| 165 | |
| 166 | As sqlite/pysqlite development continues, the pysqlite project keeps publishing new win32 binary installers for Python 2.5. Latest as of today June 29, 2008 is version 2.4.1 ({{{pysqlite-2.4.1.win32-py2.5.exe}}}) that uses sqlite version 3.5.2 (see entry marked with '''*''' in the table above.) |