From: Mike Bayer Date: Fri, 12 Mar 2010 03:12:49 +0000 (-0500) Subject: refine that a bit X-Git-Tag: rel_0_6beta2~57^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e14027620b5e294a78caf91a3da69fe1f1dd458;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git refine that a bit --- diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index 87616ed4c8..0776279490 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -138,29 +138,24 @@ class DefaultDialect(base.Dialect): def _check_unicode_returns(self, connection): cursor = connection.connection.cursor() - cursor.execute( - str( - expression.select( - [expression.cast( - expression.literal_column("'test unicode returns'"),sqltypes.VARCHAR(60)) - ]).compile(dialect=self) + def check_unicode(type_): + cursor.execute( + str( + expression.select( + [expression.cast( + expression.literal_column("'test unicode returns'"), type_) + ]).compile(dialect=self) + ) ) - ) - row = cursor.fetchone() - unicode_for_varchar = isinstance(row[0], unicode) - - cursor.execute( - str( - expression.select( - [expression.cast( - expression.literal_column("'test unicode returns'"),sqltypes.Unicode(60)) - ]).compile(dialect=self) - ) - ) + row = cursor.fetchone() + return isinstance(row[0], unicode) + + # detect plain VARCHAR + unicode_for_varchar = check_unicode(sqltypes.VARCHAR(60)) - row = cursor.fetchone() - unicode_for_unicode = isinstance(row[0], unicode) + # detect if there's an NVARCHAR type with different behavior available + unicode_for_unicode = check_unicode(sqltypes.Unicode(60)) cursor.close() if unicode_for_unicode and not unicode_for_varchar: