diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-04-24 13:00:30 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-04-24 13:00:30 -0400 |
| commit | 71c00115747d2fb13423b0b18e728b402f117528 (patch) | |
| tree | 64362d2cab5db6af78b45c0304ad98e1c0ab5a0f /lib/sqlalchemy/dialects | |
| parent | 998c66fa8b1997453c793da5faa7d4cc436739b2 (diff) | |
| download | sqlalchemy-71c00115747d2fb13423b0b18e728b402f117528.tar.gz | |
- [feature] Added a new system
for registration of new dialects in-process
without using an entrypoint. See the
docs for "Registering New Dialects".
[ticket:2462]
Diffstat (limited to 'lib/sqlalchemy/dialects')
| -rw-r--r-- | lib/sqlalchemy/dialects/__init__.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/__init__.py b/lib/sqlalchemy/dialects/__init__.py index 2d4832412..16eb32e21 100644 --- a/lib/sqlalchemy/dialects/__init__.py +++ b/lib/sqlalchemy/dialects/__init__.py @@ -17,3 +17,31 @@ __all__ = ( 'sqlite', 'sybase', ) + +from sqlalchemy import util + +def _auto_fn(name): + """default dialect importer. + + plugs into the :class:`.PluginLoader` + as a first-hit system. + + """ + if "." in name: + dialect, driver = name.split(".") + else: + dialect = name + driver = "base" + try: + module = __import__('sqlalchemy.dialects.%s' % (dialect, )).dialects + except ImportError: + return None + + module = getattr(module, dialect) + if hasattr(module, driver): + module = getattr(module, driver) + return lambda: module.dialect + else: + return None + +registry = util.PluginLoader("sqlalchemy.dialects", auto_fn=_auto_fn)
\ No newline at end of file |
