]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fix Fix for adodbapi bug introduced by ticket 419
authorRick Morrison <rickmorrison@gmail.com>
Fri, 16 Feb 2007 17:12:49 +0000 (17:12 +0000)
committerRick Morrison <rickmorrison@gmail.com>
Fri, 16 Feb 2007 17:12:49 +0000 (17:12 +0000)
CHANGES
lib/sqlalchemy/databases/mssql.py

diff --git a/CHANGES b/CHANGES
index 6143acde0a8e8be8ae04dd25b3c0aedafa04e885..08e23374ebbb728d187729bc27eaae9e620f6b70 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -67,6 +67,7 @@
   - DB-API module now selectable at run-time [ticket:419]
   - preliminary support for pyodbc (Yay!) [ticket:419]
   - now passes more unit tests [ticket:422]
+  - better unittest compatibility with ANSI functions [ticket:479]
   
 0.3.4
 - general:
index f64feed93c7927ae57ab64f3bba5b2128cd2ac00..740e629789a3fa51f7b75c578af33ae9b3b5032d 100644 (file)
@@ -48,7 +48,7 @@ dbmodule = None
 dialect = None
 
 def use_adodbapi():
-    global dbmodule, connect, make_connect_string, do_commit, sane_rowcount, dialect
+    global dbmodule, connect, make_connect_string, do_commit, sane_rowcount, dialect, colspecs, ischema_names
     import adodbapi as dbmodule
     # ADODBAPI has a non-standard Connection method
     connect = dbmodule.Connection
@@ -57,9 +57,11 @@ def use_adodbapi():
             keys.get("host"), keys.get("user"), keys.get("password"), keys.get("database"))], {}]
     sane_rowcount = True
     dialect = MSSQLDialect
+    colspecs[sqltypes.Unicode] = AdoMSUnicode
+    ischema_names['nvarchar'] = AdoMSUnicode
     
 def use_pymssql():
-    global dbmodule, connect, make_connect_string, do_commit, sane_rowcount, dialect
+    global dbmodule, connect, make_connect_string, do_commit, sane_rowcount, dialect, colspecs, ischema_names
     import pymssql as dbmodule
     connect = dbmodule.connect
     # pymmsql doesn't have a Binary method.  we use string
@@ -73,9 +75,11 @@ def use_pymssql():
     do_commit = True
     sane_rowcount = False
     dialect = PyMSSQLDialect
+    colspecs[sqltypes.Unicode] = MSUnicode
+    ischema_names['nvarchar'] = MSUnicode
     
 def use_pyodbc():
-    global dbmodule, connect, make_connect_string, do_commit, sane_rowcount, dialect
+    global dbmodule, connect, make_connect_string, do_commit, sane_rowcount, dialect, colspecs, ischema_names
     import pyodbc as dbmodule
     connect = dbmodule.connect
     make_connect_string = lambda keys: \
@@ -86,6 +90,8 @@ def use_pyodbc():
     dialect = MSSQLDialect # XXX - find out whether this needs to be tweaked for pyodbc
     import warnings
     warnings.warn('pyodbc support in sqlalchemy.databases.mssql is extremely experimental - use at your own risk.')
+    colspecs[sqltypes.Unicode] = MSUnicode # Ado?
+    ischema_names['nvarchar'] = MSUnicode # Ado?
 
 def use_default():
     import_errors = []
@@ -201,20 +207,23 @@ class MSNVarchar(MSString):
             return "NVARCHAR(%(length)s)" % {'length' : self.length}
         else:
             return "NTEXT"
-    if dbmodule and dbmodule.__name__ == 'adodbapi':
-        def convert_bind_param(self, value, dialect):
-            return value
-        def convert_result_value(self, value, dialect):
-            return value        
+
+class AdoMSNVarchar(MSNVarchar):
+    def convert_bind_param(self, value, dialect):
+        return value
+    def convert_result_value(self, value, dialect):
+        return value        
 
 class MSUnicode(sqltypes.Unicode):
     """Unicode subclass, does unicode conversion in all cases, uses NVARCHAR impl"""
     impl = MSNVarchar
-    if dbmodule and dbmodule.__name__ == 'adodbapi':
-        def convert_bind_param(self, value, dialect):
-            return value
-        def convert_result_value(self, value, dialect):
-            return value        
+
+class AdoMSUnicode(MSUnicode):
+    impl = AdoMSNVarchar
+    def convert_bind_param(self, value, dialect):
+        return value
+    def convert_result_value(self, value, dialect):
+        return value        
 
 class MSChar(sqltypes.CHAR):
     def get_col_spec(self):