PageRenderTime 30ms CodeModel.GetById 20ms app.highlight 8ms RepoModel.GetById 0ms app.codeStats 0ms

/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