summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRick Morrison <rickmorrison@gmail.com>2007-02-16 17:12:49 +0000
committerRick Morrison <rickmorrison@gmail.com>2007-02-16 17:12:49 +0000
commitfc53d244b74c32d68c7144bd7a419f16ec528d52 (patch)
treecc1e788255f3f21ad00f4a80a8b4c71346603bb1
parentc3e6960e037116156512bf3cd208aad437d12c09 (diff)
downloadsqlalchemy-fc53d244b74c32d68c7144bd7a419f16ec528d52.tar.gz
Fix Fix for adodbapi bug introduced by ticket 419
-rw-r--r--CHANGES1
-rw-r--r--lib/sqlalchemy/databases/mssql.py35
2 files changed, 23 insertions, 13 deletions
diff --git a/CHANGES b/CHANGES
index 6143acde0..08e23374e 100644
--- 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:
diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py
index f64feed93..740e62978 100644
--- a/lib/sqlalchemy/databases/mssql.py
+++ b/lib/sqlalchemy/databases/mssql.py
@@ -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):