/SQLAlchemy-0.7.8/lib/sqlalchemy/dialects/mssql/adodbapi.py
Python | 69 lines | 49 code | 8 blank | 12 comment | 4 complexity | 0ead50b3467d021b7bd51283f80e669c MD5 | raw file
1# mssql/adodbapi.py
2# Copyright (C) 2005-2012 the SQLAlchemy authors and contributors <see AUTHORS file>
3#
4# This module is part of SQLAlchemy and is released under
5# the MIT License: http://www.opensource.org/licenses/mit-license.php
6
7"""
8The adodbapi dialect is not implemented for 0.6 at this time.
9
10"""
11import datetime
12from sqlalchemy import types as sqltypes, util
13from sqlalchemy.dialects.mssql.base import MSDateTime, MSDialect
14import sys
15
16class MSDateTime_adodbapi(MSDateTime):
17 def result_processor(self, dialect, coltype):
18 def process(value):
19 # adodbapi will return datetimes with empty time
20 # values as datetime.date() objects.
21 # Promote them back to full datetime.datetime()
22 if type(value) is datetime.date:
23 return datetime.datetime(value.year, value.month, value.day)
24 return value
25 return process
26
27
28class MSDialect_adodbapi(MSDialect):
29 supports_sane_rowcount = True
30 supports_sane_multi_rowcount = True
31 supports_unicode = sys.maxunicode == 65535
32 supports_unicode_statements = True
33 driver = 'adodbapi'
34
35 @classmethod
36 def import_dbapi(cls):
37 import adodbapi as module
38 return module
39
40 colspecs = util.update_copy(
41 MSDialect.colspecs,
42 {
43 sqltypes.DateTime:MSDateTime_adodbapi
44 }
45 )
46
47 def create_connect_args(self, url):
48 keys = url.query
49
50 connectors = ["Provider=SQLOLEDB"]
51 if 'port' in keys:
52 connectors.append ("Data Source=%s, %s" %
53 (keys.get("host"), keys.get("port")))
54 else:
55 connectors.append ("Data Source=%s" % keys.get("host"))
56 connectors.append ("Initial Catalog=%s" % keys.get("database"))
57 user = keys.get("user")
58 if user:
59 connectors.append("User Id=%s" % user)
60 connectors.append("Password=%s" % keys.get("password", ""))
61 else:
62 connectors.append("Integrated Security=SSPI")
63 return [[";".join (connectors)], {}]
64
65 def is_disconnect(self, e, connection, cursor):
66 return isinstance(e, self.dbapi.adodbapi.DatabaseError) and \
67 "'connection failure'" in str(e)
68
69dialect = MSDialect_adodbapi