zxJDBC.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # connectors/zxJDBC.py
  2. # Copyright (C) 2005-2017 the SQLAlchemy authors and contributors
  3. # <see AUTHORS file>
  4. #
  5. # This module is part of SQLAlchemy and is released under
  6. # the MIT License: http://www.opensource.org/licenses/mit-license.php
  7. import sys
  8. from . import Connector
  9. class ZxJDBCConnector(Connector):
  10. driver = 'zxjdbc'
  11. supports_sane_rowcount = False
  12. supports_sane_multi_rowcount = False
  13. supports_unicode_binds = True
  14. supports_unicode_statements = sys.version > '2.5.0+'
  15. description_encoding = None
  16. default_paramstyle = 'qmark'
  17. jdbc_db_name = None
  18. jdbc_driver_name = None
  19. @classmethod
  20. def dbapi(cls):
  21. from com.ziclix.python.sql import zxJDBC
  22. return zxJDBC
  23. def _driver_kwargs(self):
  24. """Return kw arg dict to be sent to connect()."""
  25. return {}
  26. def _create_jdbc_url(self, url):
  27. """Create a JDBC url from a :class:`~sqlalchemy.engine.url.URL`"""
  28. return 'jdbc:%s://%s%s/%s' % (self.jdbc_db_name, url.host,
  29. url.port is not None
  30. and ':%s' % url.port or '',
  31. url.database)
  32. def create_connect_args(self, url):
  33. opts = self._driver_kwargs()
  34. opts.update(url.query)
  35. return [
  36. [self._create_jdbc_url(url),
  37. url.username, url.password,
  38. self.jdbc_driver_name],
  39. opts]
  40. def is_disconnect(self, e, connection, cursor):
  41. if not isinstance(e, self.dbapi.ProgrammingError):
  42. return False
  43. e = str(e)
  44. return 'connection is closed' in e or 'cursor is closed' in e
  45. def _get_server_version_info(self, connection):
  46. # use connection.connection.dbversion, and parse appropriately
  47. # to get a tuple
  48. raise NotImplementedError()