diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2020-11-08 18:05:54 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-11-08 18:05:54 +0000 |
| commit | 75fb71d25e988bcc13629469cb6739ad7eb539e9 (patch) | |
| tree | 11bdb9734f09596efadffc89120fc246ffb0f326 /lib/sqlalchemy/sql | |
| parent | 757a5b1858a742133e2197940a55f38823534365 (diff) | |
| parent | c6d869f814d2e8ffe03e519c59cf35f7a4927e1c (diff) | |
| download | sqlalchemy-75fb71d25e988bcc13629469cb6739ad7eb539e9.tar.gz | |
Merge "Allow dialect-specific stringification"
Diffstat (limited to 'lib/sqlalchemy/sql')
| -rw-r--r-- | lib/sqlalchemy/sql/ddl.py | 4 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/elements.py | 14 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/schema.py | 2 |
3 files changed, 18 insertions, 2 deletions
diff --git a/lib/sqlalchemy/sql/ddl.py b/lib/sqlalchemy/sql/ddl.py index 3bd831292..f1012292b 100644 --- a/lib/sqlalchemy/sql/ddl.py +++ b/lib/sqlalchemy/sql/ddl.py @@ -373,6 +373,10 @@ class _CreateDropBase(DDLElement): self.element = element self.bind = bind + @property + def stringify_dialect(self): + return self.element.create_drop_stringify_dialect + def _create_rule_disable(self, compiler): """Allow disable of _create_rule using a callable. 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) diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py index ab635cd56..98ea8648a 100644 --- a/lib/sqlalchemy/sql/schema.py +++ b/lib/sqlalchemy/sql/schema.py @@ -100,6 +100,8 @@ class SchemaItem(SchemaEventTarget, visitors.Visitable): __visit_name__ = "schema_item" + create_drop_stringify_dialect = "default" + def _init_items(self, *args, **kw): """Initialize the list of child items for this SchemaItem.""" for item in args: |
