diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-09-24 09:01:31 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-09-24 09:01:31 -0400 |
| commit | e80b725a953d153b132bce62564cbf6b773a8769 (patch) | |
| tree | d26a6428316c3140c6d78d8b3fac05ce581e9665 /lib/sqlalchemy/engine/url.py | |
| parent | 13897cb81bfcbf24c2e96cd22f61a7d42cff4ca8 (diff) | |
| download | sqlalchemy-e80b725a953d153b132bce62564cbf6b773a8769.tar.gz | |
- The entry point resolution supported by
create_engine() now supports resolution of
individual DBAPI drivers on top of a built-in
or entry point-resolved dialect, using the
standard '+' notation - it's converted to
a '.' before being resolved as an entry
point. [ticket:2286]
Diffstat (limited to 'lib/sqlalchemy/engine/url.py')
| -rw-r--r-- | lib/sqlalchemy/engine/url.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/sqlalchemy/engine/url.py b/lib/sqlalchemy/engine/url.py index 0734f6035..f896eee29 100644 --- a/lib/sqlalchemy/engine/url.py +++ b/lib/sqlalchemy/engine/url.py @@ -104,7 +104,14 @@ class URL(object): module = __import__('sqlalchemy.dialects.%s' % (dialect, )).dialects module = getattr(module, dialect) - module = getattr(module, driver) + if hasattr(module, driver): + module = getattr(module, driver) + else: + module = self._load_entry_point() + if module is None: + raise exc.ArgumentError( + "Could not determine dialect for '%s'." % + self.drivername) return module.dialect except ImportError: @@ -128,7 +135,7 @@ class URL(object): return None for res in pkg_resources.iter_entry_points('sqlalchemy.dialects'): - if res.name == self.drivername: + if res.name == self.drivername.replace("+", "."): return res.load() else: return None |
