diff options
Diffstat (limited to 'lib/sqlalchemy/engine/default.py')
-rw-r--r-- | lib/sqlalchemy/engine/default.py | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index 87616ed4c..077627949 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: |