]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
refine that a bit
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 12 Mar 2010 03:12:49 +0000 (22:12 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 12 Mar 2010 03:12:49 +0000 (22:12 -0500)
lib/sqlalchemy/engine/default.py

index 87616ed4c8f1eb1d537873f0afa157bc227a93e2..0776279490466914b71382bd5742c9a14e218ab0 100644 (file)
@@ -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: