diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-04-03 15:05:27 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-04-04 13:45:06 -0400 |
commit | 9f82afea25958910038ec768d81b157d9d2fdc7c (patch) | |
tree | 4d5af698d91d4343c07cb856693b3ec6b11c3268 /lib/sqlalchemy/sql | |
parent | 0a44f97cb80fa062927689fb0c4c1b6026c50513 (diff) | |
download | sqlalchemy-9f82afea25958910038ec768d81b157d9d2fdc7c.tar.gz |
Recognize brackets, quoted_name in SQL Server schema
The SQL Server dialect now allows for a database and/or owner name
with a dot inside of it, using brackets explicitly in the string around
the owner and optionally the database name as well. In addition,
sending the :class:`.quoted_name` construct for the schema name will
not split on the dot and will deliver the full string as the "owner".
:class:`.quoted_name` is also now available from the ``sqlalchemy.sql``
import space.
Change-Id: I77491d63ce47638bd23787d903ccde2f35a9d43d
Fixes: #2626
Diffstat (limited to 'lib/sqlalchemy/sql')
-rw-r--r-- | lib/sqlalchemy/sql/__init__.py | 1 | ||||
-rw-r--r-- | lib/sqlalchemy/sql/elements.py | 8 | ||||
-rw-r--r-- | lib/sqlalchemy/sql/expression.py | 5 |
3 files changed, 10 insertions, 4 deletions
diff --git a/lib/sqlalchemy/sql/__init__.py b/lib/sqlalchemy/sql/__init__.py index 5eebd7d1c..13042ed7a 100644 --- a/lib/sqlalchemy/sql/__init__.py +++ b/lib/sqlalchemy/sql/__init__.py @@ -57,6 +57,7 @@ from .expression import ( outerjoin, outparam, over, + quoted_name, select, subquery, table, diff --git a/lib/sqlalchemy/sql/elements.py b/lib/sqlalchemy/sql/elements.py index 1f8129382..001c3d042 100644 --- a/lib/sqlalchemy/sql/elements.py +++ b/lib/sqlalchemy/sql/elements.py @@ -3905,8 +3905,8 @@ class quoted_name(util.MemoizedSlots, util.text_type): can be quoted. Such as to use the :meth:`.Engine.has_table` method with an unconditionally quoted name:: - from sqlaclchemy import create_engine - from sqlalchemy.sql.elements import quoted_name + from sqlalchemy import create_engine + from sqlalchemy.sql import quoted_name engine = create_engine("oracle+cx_oracle://some_dsn") engine.has_table(quoted_name("some_table", True)) @@ -3917,6 +3917,10 @@ class quoted_name(util.MemoizedSlots, util.text_type): .. versionadded:: 0.9.0 + .. versionchanged:: 1.2 The :class:`.quoted_name` construct is now + importable from ``sqlalchemy.sql``, in addition to the previous + location of ``sqlalchemy.sql.elements``. + """ __slots__ = 'quote', 'lower', 'upper' diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index 172bf4b05..193dbaa96 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -26,7 +26,8 @@ __all__ = [ 'nullslast', 'or_', 'outparam', 'outerjoin', 'over', 'select', 'subquery', 'table', 'text', - 'tuple_', 'type_coerce', 'union', 'union_all', 'update', 'within_group', + 'tuple_', 'type_coerce', 'quoted_name', 'union', 'union_all', 'update', + 'within_group', 'TableSample', 'tablesample'] @@ -37,7 +38,7 @@ from .elements import ClauseElement, ColumnElement,\ BindParameter, CollectionAggregate, UnaryExpression, BooleanClauseList, \ Label, Cast, Case, ColumnClause, TextClause, Over, Null, \ True_, False_, BinaryExpression, Tuple, TypeClause, Extract, \ - Grouping, WithinGroup, not_, \ + Grouping, WithinGroup, not_, quoted_name, \ collate, literal_column, between,\ literal, outparam, TypeCoerce, ClauseList, FunctionFilter |