From 6e14027620b5e294a78caf91a3da69fe1f1dd458 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 11 Mar 2010 22:12:49 -0500 Subject: [PATCH] refine that a bit --- lib/sqlalchemy/engine/default.py | 35 ++++++++++++++------------------ 1 file changed, 15 insertions(+), 20 deletions(-) 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: -- 2.47.3