summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/sqlite.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-10-12 14:39:20 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-10-12 14:39:20 +0000
commit4ca89fd3c4129551174aadd686db9f96bac0ba61 (patch)
treedba730386d39655139ed83909fdda2c4c68a9433 /lib/sqlalchemy/databases/sqlite.py
parent40b1aa8f24b97dd3c8d691ecfd6c0cd5420eb105 (diff)
downloadsqlalchemy-4ca89fd3c4129551174aadd686db9f96bac0ba61.tar.gz
- String's (and Unicode's, UnicodeText's, etc.) convert_unicoderel_0_5rc2
logic disabled in the sqlite dialect, to adjust for pysqlite 2.5.0's new requirement that only Python unicode objects are accepted; http://itsystementwicklung.de/pipermail/list-pysqlite/2008-March/000018.html
Diffstat (limited to 'lib/sqlalchemy/databases/sqlite.py')
-rw-r--r--lib/sqlalchemy/databases/sqlite.py34
1 files changed, 31 insertions, 3 deletions
diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py
index 6689db8f1..35f07b784 100644
--- a/lib/sqlalchemy/databases/sqlite.py
+++ b/lib/sqlalchemy/databases/sqlite.py
@@ -130,15 +130,43 @@ class SLTime(DateTimeMixin, sqltypes.Time):
def result_processor(self, dialect):
return self._result_processor(datetime.time, self._reg)
-class SLText(sqltypes.Text):
+class SLUnicodeMixin(object):
+ def bind_processor(self, dialect):
+ if self.convert_unicode or dialect.convert_unicode:
+ if self.assert_unicode is None:
+ assert_unicode = dialect.assert_unicode
+ else:
+ assert_unicode = self.assert_unicode
+
+ if not assert_unicode:
+ return None
+
+ def process(value):
+ if not isinstance(value, (unicode, NoneType)):
+ if assert_unicode == 'warn':
+ util.warn("Unicode type received non-unicode bind "
+ "param value %r" % value)
+ return value
+ else:
+ raise exc.InvalidRequestError("Unicode type received non-unicode bind param value %r" % value)
+ else:
+ return value
+ return process
+ else:
+ return None
+
+ def result_processor(self, dialect):
+ return None
+
+class SLText(SLUnicodeMixin, sqltypes.Text):
def get_col_spec(self):
return "TEXT"
-class SLString(sqltypes.String):
+class SLString(SLUnicodeMixin, sqltypes.String):
def get_col_spec(self):
return "VARCHAR" + (self.length and "(%d)" % self.length or "")
-class SLChar(sqltypes.CHAR):
+class SLChar(SLUnicodeMixin, sqltypes.CHAR):
def get_col_spec(self):
return "CHAR" + (self.length and "(%d)" % self.length or "")