__init__.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # dialects/__init__.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. __all__ = (
  8. 'firebird',
  9. 'mssql',
  10. 'mysql',
  11. 'oracle',
  12. 'postgresql',
  13. 'sqlite',
  14. 'sybase',
  15. )
  16. from .. import util
  17. _translates = {'postgres': 'postgresql'}
  18. def _auto_fn(name):
  19. """default dialect importer.
  20. plugs into the :class:`.PluginLoader`
  21. as a first-hit system.
  22. """
  23. if "." in name:
  24. dialect, driver = name.split(".")
  25. else:
  26. dialect = name
  27. driver = "base"
  28. if dialect in _translates:
  29. translated = _translates[dialect]
  30. util.warn_deprecated(
  31. "The '%s' dialect name has been "
  32. "renamed to '%s'" % (dialect, translated)
  33. )
  34. dialect = translated
  35. try:
  36. module = __import__('sqlalchemy.dialects.%s' % (dialect, )).dialects
  37. except ImportError:
  38. return None
  39. module = getattr(module, dialect)
  40. if hasattr(module, driver):
  41. module = getattr(module, driver)
  42. return lambda: module.dialect
  43. else:
  44. return None
  45. registry = util.PluginLoader("sqlalchemy.dialects", auto_fn=_auto_fn)
  46. plugins = util.PluginLoader("sqlalchemy.plugins")