diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-10-12 14:39:20 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-10-12 14:39:20 +0000 |
commit | 4ca89fd3c4129551174aadd686db9f96bac0ba61 (patch) | |
tree | dba730386d39655139ed83909fdda2c4c68a9433 /lib/sqlalchemy/databases/sqlite.py | |
parent | 40b1aa8f24b97dd3c8d691ecfd6c0cd5420eb105 (diff) | |
download | sqlalchemy-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.py | 34 |
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 "") |