From: Mike Bayer Date: Fri, 12 Mar 2010 03:10:25 +0000 (-0500) Subject: adding windows-appropriate levels of pain to unicode handling X-Git-Tag: rel_0_6beta2~57^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e66ca9edd525feb43177014d7736a79440262f3a;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git adding windows-appropriate levels of pain to unicode handling --- diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index 454d2a593e..87616ed4c8 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -154,7 +154,7 @@ class DefaultDialect(base.Dialect): str( expression.select( [expression.cast( - expression.literal_column("'test unicode returns'"),sqltypes.VARCHAR(60)) + expression.literal_column("'test unicode returns'"),sqltypes.Unicode(60)) ]).compile(dialect=self) ) ) @@ -162,7 +162,7 @@ class DefaultDialect(base.Dialect): row = cursor.fetchone() unicode_for_unicode = isinstance(row[0], unicode) cursor.close() - + if unicode_for_unicode and not unicode_for_varchar: return "conditional" else: diff --git a/test/sql/test_types.py b/test/sql/test_types.py index fa8254a7a4..af8881a4ee 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -311,7 +311,11 @@ class UnicodeTest(TestBase, AssertsExecutionResults): def test_native_unicode(self): """assert expected values for 'native unicode' mode""" - + + if testing.against('mssql+pyodbc') and not testing.db.dialect.freetds: + assert testing.db.dialect.returns_unicode_strings == 'conditional' + return + assert testing.db.dialect.returns_unicode_strings == \ ((testing.db.name, testing.db.driver) in \ ( @@ -518,6 +522,14 @@ class UnicodeTest(TestBase, AssertsExecutionResults): 'drole de petit voix m?a reveille. Elle disait: < S?il vous plait? ' 'dessine-moi un mouton! >' ) + elif testing.against('mssql+pyodbc') and not testing.db.dialect.freetds: + # TODO: no clue what this is + eq_( + x, + u'Alors vous imaginez ma surprise, au lever du jour, quand une ' + u'drle de petit voix ma rveill. Elle disait: Sil vous plat ' + u'dessine-moi un mouton! ' + ) elif engine.dialect.returns_unicode_strings: eq_(x, unicodedata) else: