summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/engine/strategies.py3
-rw-r--r--lib/sqlalchemy/engine/url.py18
2 files changed, 12 insertions, 9 deletions
diff --git a/lib/sqlalchemy/engine/strategies.py b/lib/sqlalchemy/engine/strategies.py
index a802e5d90..e2a086de4 100644
--- a/lib/sqlalchemy/engine/strategies.py
+++ b/lib/sqlalchemy/engine/strategies.py
@@ -48,8 +48,7 @@ class DefaultEngineStrategy(EngineStrategy):
# create url.URL object
u = url.make_url(name_or_url)
- entrypoint = u.get_dialect()
- dialect_cls = entrypoint.get_dialect_cls(u)
+ entrypoint, dialect_cls = u._get_dialect_plus_entrypoint()
if kwargs.pop('_coerce_config', False):
def pop_kwarg(key, default=None):
diff --git a/lib/sqlalchemy/engine/url.py b/lib/sqlalchemy/engine/url.py
index d045961dd..07f6a5730 100644
--- a/lib/sqlalchemy/engine/url.py
+++ b/lib/sqlalchemy/engine/url.py
@@ -117,11 +117,7 @@ class URL(object):
else:
return self.drivername.split('+')[1]
- def get_dialect(self):
- """Return the SQLAlchemy database dialect class corresponding
- to this URL's driver name.
- """
-
+ def _get_dialect_plus_entrypoint(self):
if '+' not in self.drivername:
name = self.drivername
else:
@@ -133,9 +129,17 @@ class URL(object):
if hasattr(cls, 'dialect') and \
isinstance(cls.dialect, type) and \
issubclass(cls.dialect, Dialect):
- return cls.dialect
+ return cls.dialect, cls.dialect
else:
- return cls
+ dialect_cls = cls.get_dialect_cls(self)
+ return cls, dialect_cls
+
+ def get_dialect(self):
+ """Return the SQLAlchemy database dialect class corresponding
+ to this URL's driver name.
+ """
+ entrypoint, dialect_cls = self._get_dialect_plus_entrypoint()
+ return dialect_cls
def translate_connect_args(self, names=[], **kw):
"""Translate url attributes into a dictionary of connection arguments.