summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/elements.py
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2020-11-08 18:05:54 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2020-11-08 18:05:54 +0000
commit75fb71d25e988bcc13629469cb6739ad7eb539e9 (patch)
tree11bdb9734f09596efadffc89120fc246ffb0f326 /lib/sqlalchemy/sql/elements.py
parent757a5b1858a742133e2197940a55f38823534365 (diff)
parentc6d869f814d2e8ffe03e519c59cf35f7a4927e1c (diff)
downloadsqlalchemy-75fb71d25e988bcc13629469cb6739ad7eb539e9.tar.gz
Merge "Allow dialect-specific stringification"
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)