PageRenderTime 50ms CodeModel.GetById 15ms 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. The adodbapi dialect is not implemented for 0.6 at this time.
  8. """
  9. import datetime
  10. from sqlalchemy import types as sqltypes, util
  11. from sqlalchemy.dialects.mssql.base import MSDateTime, MSDialect
  12. import sys
  13. class MSDateTime_adodbapi(MSDateTime):
  14. def result_processor(self, dialect, coltype):
  15. def process(value):
  16. # adodbapi will return datetimes with empty time
  17. # values as datetime.date() objects.
  18. # Promote them back to full datetime.datetime()
  19. if type(value) is datetime.date:
  20. return datetime.datetime(value.year, value.month, value.day)
  21. return value
  22. return process
  23. class MSDialect_adodbapi(MSDialect):
  24. supports_sane_rowcount = True
  25. supports_sane_multi_rowcount = True
  26. supports_unicode = sys.maxunicode == 65535
  27. supports_unicode_statements = True
  28. driver = 'adodbapi'
  29. @classmethod
  30. def import_dbapi(cls):
  31. import adodbapi as module
  32. return module
  33. colspecs = util.update_copy(
  34. MSDialect.colspecs,
  35. {
  36. sqltypes.DateTime:MSDateTime_adodbapi
  37. }
  38. )
  39. def create_connect_args(self, url):
  40. keys = url.query
  41. connectors = ["Provider=SQLOLEDB"]
  42. if 'port' in keys:
  43. connectors.append ("Data Source=%s, %s" %
  44. (keys.get("host"), keys.get("port")))
  45. else:
  46. connectors.append ("Data Source=%s" % keys.get("host"))
  47. connectors.append ("Initial Catalog=%s" % keys.get("database"))
  48. user = keys.get("user")
  49. if user:
  50. connectors.append("User Id=%s" % user)
  51. connectors.append("Password=%s" % keys.get("password", ""))
  52. else:
  53. connectors.append("Integrated Security=SSPI")
  54. return [[";".join (connectors)], {}]
  55. def is_disconnect(self, e, connection, cursor):
  56. return isinstance(e, self.dbapi.adodbapi.DatabaseError) and \
  57. "'connection failure'" in str(e)
  58. dialect = MSDialect_adodbapi