[SQL-CVS] r1329 - in SQLObject/trunk/sqlobject: . sqlite
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
|
From: <sub...@co...> - 2005-11-30 18:36:03
|
Author: phd
Date: 2005-11-30 18:35:57 +0000 (Wed, 30 Nov 2005)
New Revision: 1329
Modified:
SQLObject/trunk/sqlobject/col.py
SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py
Log:
For BLOBCol use encode()/decode() from PySQLite1 if available; else use base64.
Modified: SQLObject/trunk/sqlobject/col.py
===================================================================
--- SQLObject/trunk/sqlobject/col.py 2005-11-30 18:02:37 UTC (rev 1328)
+++ SQLObject/trunk/sqlobject/col.py 2005-11-30 18:35:57 UTC (rev 1329)
@@ -1204,7 +1204,7 @@
return None
if isinstance(value, str):
module = state.soObject._connection.module
- if module.__name__ == "sqlite":
+ if module.__name__ in ("sqlite", "pysqlite2.dbapi2"):
value = module.decode(value)
return value
if isinstance(value, (buffer_type, state.soObject._connection._binaryType)):
Modified: SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py
===================================================================
--- SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py 2005-11-30 18:02:37 UTC (rev 1328)
+++ SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py 2005-11-30 18:35:57 UTC (rev 1329)
@@ -3,6 +3,7 @@
sqlite = None
using_sqlite2 = False
+sqlite2_Binary = None
class SQLiteConnection(DBAPI):
@@ -34,6 +35,19 @@
for col_type in "text", "char", "varchar":
sqlite.register_converter(col_type, stop_pysqlite2_converting_strings_to_unicode)
sqlite.register_converter(col_type.upper(), stop_pysqlite2_converting_strings_to_unicode)
+ 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
+ global sqlite2_Binary
+ if sqlite2_Binary is None:
+ sqlite2_Binary = sqlite.Binary
+ sqlite.Binary = lambda s: sqlite2_Binary(sqlite.encode(s))
else:
opts['autocommit'] = autoCommit
if 'encoding' in kw:
|