diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-11 21:52:54 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-11 21:52:54 -0500 |
commit | 6c2e82ff8ce42d22a974ccd8890f96f671680faa (patch) | |
tree | 600da841b0b0051e832d69284013b6d3bd7ebacf /lib/sqlalchemy/engine/default.py | |
parent | 875487b8b78761dc162be55602da9b99bf0aca69 (diff) | |
download | sqlalchemy-6c2e82ff8ce42d22a974ccd8890f96f671680faa.tar.gz |
add a third state to converts_unicode_strings - "conditional". at the moment
this will have us do a check. i.e. for MSSQL where NVARCHAR is unicode and VARCHAR is not.
Diffstat (limited to 'lib/sqlalchemy/engine/default.py')
-rw-r--r-- | lib/sqlalchemy/engine/default.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index cd2c10393..454d2a593 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -148,9 +148,25 @@ class DefaultDialect(base.Dialect): ) row = cursor.fetchone() - result = isinstance(row[0], unicode) + unicode_for_varchar = isinstance(row[0], unicode) + + cursor.execute( + str( + expression.select( + [expression.cast( + expression.literal_column("'test unicode returns'"),sqltypes.VARCHAR(60)) + ]).compile(dialect=self) + ) + ) + + row = cursor.fetchone() + unicode_for_unicode = isinstance(row[0], unicode) cursor.close() - return result + + if unicode_for_unicode and not unicode_for_varchar: + return "conditional" + else: + return unicode_for_varchar def type_descriptor(self, typeobj): """Provide a database-specific ``TypeEngine`` object, given |