summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/url.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-09-24 09:01:31 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-09-24 09:01:31 -0400
commite80b725a953d153b132bce62564cbf6b773a8769 (patch)
treed26a6428316c3140c6d78d8b3fac05ce581e9665 /lib/sqlalchemy/engine/url.py
parent13897cb81bfcbf24c2e96cd22f61a7d42cff4ca8 (diff)
downloadsqlalchemy-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.py11
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