summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/elements.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/sql/elements.py')
-rw-r--r--lib/sqlalchemy/sql/elements.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/sqlalchemy/sql/elements.py b/lib/sqlalchemy/sql/elements.py
index 03476633a..86611baeb 100644
--- a/lib/sqlalchemy/sql/elements.py
+++ b/lib/sqlalchemy/sql/elements.py
@@ -199,6 +199,9 @@ class ClauseElement(
"""
supports_execution = False
+
+ stringify_dialect = "default"
+
_from_objects = []
bind = None
description = None
@@ -435,6 +438,7 @@ class ClauseElement(
return self
@util.preload_module("sqlalchemy.engine.default")
+ @util.preload_module("sqlalchemy.engine.url")
def compile(self, bind=None, dialect=None, **kw):
"""Compile this SQL expression.
@@ -482,14 +486,20 @@ class ClauseElement(
"""
- default = util.preloaded.engine_default
if not dialect:
if bind:
dialect = bind.dialect
elif self.bind:
dialect = self.bind.dialect
else:
- dialect = default.StrCompileDialect()
+ if self.stringify_dialect == "default":
+ default = util.preloaded.engine_default
+ dialect = default.StrCompileDialect()
+ else:
+ url = util.preloaded.engine_url
+ dialect = url.URL.create(
+ self.stringify_dialect
+ ).get_dialect()()
return self._compiler(dialect, **kw)