summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/mssql/adodbapi.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2009-08-06 21:11:27 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2009-08-06 21:11:27 +0000
commit8fc5005dfe3eb66a46470ad8a8c7b95fc4d6bdca (patch)
treeae9e27d12c9fbf8297bb90469509e1cb6a206242 /lib/sqlalchemy/dialects/mssql/adodbapi.py
parent7638aa7f242c6ea3d743aa9100e32be2052546a6 (diff)
downloadsqlalchemy-8fc5005dfe3eb66a46470ad8a8c7b95fc4d6bdca.tar.gz
merge 0.6 series to trunk.
Diffstat (limited to 'lib/sqlalchemy/dialects/mssql/adodbapi.py')
-rw-r--r--lib/sqlalchemy/dialects/mssql/adodbapi.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/adodbapi.py b/lib/sqlalchemy/dialects/mssql/adodbapi.py
new file mode 100644
index 000000000..10b8b33b3
--- /dev/null
+++ b/lib/sqlalchemy/dialects/mssql/adodbapi.py
@@ -0,0 +1,51 @@
+from sqlalchemy import types as sqltypes
+from sqlalchemy.dialects.mssql.base import MSDateTime, MSDialect
+import sys
+
+class MSDateTime_adodbapi(MSDateTime):
+ def result_processor(self, dialect):
+ def process(value):
+ # adodbapi will return datetimes with empty time values as datetime.date() objects.
+ # Promote them back to full datetime.datetime()
+ if type(value) is datetime.date:
+ return datetime.datetime(value.year, value.month, value.day)
+ return value
+ return process
+
+
+class MSDialect_adodbapi(MSDialect):
+ supports_sane_rowcount = True
+ supports_sane_multi_rowcount = True
+ supports_unicode = sys.maxunicode == 65535
+ supports_unicode_statements = True
+ driver = 'adodbapi'
+
+ @classmethod
+ def import_dbapi(cls):
+ import adodbapi as module
+ return module
+
+ colspecs = MSDialect.colspecs.copy()
+ colspecs[sqltypes.DateTime] = MSDateTime_adodbapi
+
+ def create_connect_args(self, url):
+ keys = url.query
+
+ connectors = ["Provider=SQLOLEDB"]
+ if 'port' in keys:
+ connectors.append ("Data Source=%s, %s" % (keys.get("host"), keys.get("port")))
+ else:
+ connectors.append ("Data Source=%s" % keys.get("host"))
+ connectors.append ("Initial Catalog=%s" % keys.get("database"))
+ user = keys.get("user")
+ if user:
+ connectors.append("User Id=%s" % user)
+ connectors.append("Password=%s" % keys.get("password", ""))
+ else:
+ connectors.append("Integrated Security=SSPI")
+ return [[";".join (connectors)], {}]
+
+ def is_disconnect(self, e):
+ return isinstance(e, self.dbapi.adodbapi.DatabaseError) and "'connection failure'" in str(e)
+
+dialect = MSDialect_adodbapi