]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Restored convert_unicode handling on mssql. Fixes #1291.
authorMichael Trier <mtrier@gmail.com>
Thu, 22 Jan 2009 01:46:04 +0000 (01:46 +0000)
committerMichael Trier <mtrier@gmail.com>
Thu, 22 Jan 2009 01:46:04 +0000 (01:46 +0000)
CHANGES
lib/sqlalchemy/databases/mssql.py
test/dialect/mssql.py

diff --git a/CHANGES b/CHANGES
index 5ff51fa8cfc176b0a1b9e92d3c6225d377c0498a..164d92b0b5ccd18a2e8b24d7be7a15c5e9642abc 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -29,7 +29,11 @@ CHANGES
 - sql
     - Further fixes to the "percent signs and spaces in column/table
        names" functionality. [ticket:1284]
-       
+
+- mssql
+    - Restored convert_unicode handling. Results were being passed
+      on through without conversion. [ticket:1291]
+
 0.5.1
 ========
 
index 24296c329b6d129b730dcf7bce78b6b23933dbd1..1a3c20a071049d6ae24d8cc317016da859981e04 100644 (file)
@@ -308,9 +308,6 @@ class _StringType(object):
         else:
             return None
 
-    def result_processor(self, dialect):
-        return None
-
 
 class MSNumeric(sqltypes.Numeric):
     def result_processor(self, dialect):
index f0b0bec76f6c77f9d1f60fbcacaf575362a25569..08ddfd5a1ba837348402e07d682ae4bdc09ee573 100755 (executable)
@@ -1,3 +1,4 @@
+# -*- encoding: utf-8
 import testenv; testenv.configure_for_tests()
 import datetime, os, pickleable, re
 from sqlalchemy import *
@@ -144,6 +145,28 @@ class ReflectionTest(TestBase):
             table.drop()
 
 
+class QueryUnicodeTest(TestBase):
+    __only_on__ = 'mssql'
+
+    def test_convert_unicode(self):
+        meta = MetaData(testing.db)
+        t1 = Table('unitest_table', meta,
+                Column('id', Integer, primary_key=True),
+                Column('descr', mssql.MSText(200, convert_unicode=True)))
+        meta.create_all()
+        con = testing.db.connect()
+
+        # encode in UTF-8 (sting object) because this is the default dialect encoding
+        con.execute(u"insert into unitest_table values ('bien mangĂ©')".encode('UTF-8'))
+
+        try:
+            r = t1.select().execute().fetchone()
+            assert isinstance(r[1], unicode), '%s is %s instead of unicode, working on %s' % (
+                    r[1], type(r[1]), meta.bind)
+
+        finally:
+            meta.drop_all()
+
 class QueryTest(TestBase):
     __only_on__ = 'mssql'