On Fri, Nov 09, 2007 at 09:13:30AM +0200, Dan Pascu wrote:
> There is an issue in the sqlite backend regarding encoding/decoding. Below
> is the relevant code from the __init__ method:
>
> class SQLiteConnection(DBAPI):
> [...]
> def __init__(self, filename, autoCommit=1, **kw):
> global sqlite
> global using_sqlite2
> if sqlite is None:
> try:
> import sqlite3 as sqlite
> using_sqlite2 = True
> except ImportError:
> try:
> from pysqlite2 import dbapi2 as sqlite
> using_sqlite2 = True
> except ImportError:
> import sqlite
> using_sqlite2 = False
> self.module = sqlite
> [...]
> if using_sqlite2:
> [...]
> try:
> from sqlite import encode, decode
> except ImportError:
> import base64
> sqlite.encode = base64.encodestring
> sqlite.decode = base64.decodestring
> else:
> sqlite.encode = encode
> sqlite.decode = decode
>
> Now if I have pysqlite2 installed it will be preferred over sqlite.
> However the issue is that if I also have sqlite installed it will import
> the encode/decode functions from there, while if I don't it will use
> base64 encoding.
>
> I was recently hit by this as I has both installed and I was using a
> sqlite3 database with PickleCol. Later I removed sqlite and suddenly my
> database stopped working and gave errors on the pickle columns as the
> encoder/decoder changed.
>
> IMO if we use pysqlite2 or sqlite3 we shouldn't import encoders/decoders
> from the old sqlite module, but instead use base64 always.
Fixed in the revisions 3158-3161 (0.7, 0.8, 0.9 and the trunk).
Oleg.
--
Oleg Broytmann http://phd.pp.ru/ [EMAIL PROTECTED]
Programmers don't die, they just GOSUB without RETURN.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
sqlobject-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss