From 187a3a27cf8303ba332e011a482bd3b21cd3c01c Mon Sep 17 00:00:00 2001 From: Dylan Modesitt Date: Wed, 6 May 2020 14:17:23 -0400 Subject: Add 'schema' parameter to table Added a "schema" parameter to the :func:`_expression.table` construct, allowing ad-hoc table expressions to also include a schema name. Pull request courtesy Dylan Modesitt. Fixes: #5309 Closes: #5310 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/5310 Pull-request-sha: ce85681050500186678131f948b6ea277a65dc17 Change-Id: I32015d593e1ee1121c7426fbffdcc565d025fad1 --- lib/sqlalchemy/sql/selectable.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'lib/sqlalchemy/sql') diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py index c8df637ba..27b9425ec 100644 --- a/lib/sqlalchemy/sql/selectable.py +++ b/lib/sqlalchemy/sql/selectable.py @@ -1878,9 +1878,9 @@ class FromGrouping(GroupedElement, FromClause): class TableClause(Immutable, FromClause): """Represents a minimal "table" construct. - This is a lightweight table object that has only a name and a + This is a lightweight table object that has only a name, a collection of columns, which are typically produced - by the :func:`_expression.column` function:: + by the :func:`_expression.column` function, and a schema:: from sqlalchemy import table, column @@ -1925,7 +1925,7 @@ class TableClause(Immutable, FromClause): _autoincrement_column = None """No PK or default support so no autoincrement column.""" - def __init__(self, name, *columns): + def __init__(self, name, *columns, **kw): """Produce a new :class:`_expression.TableClause`. The object returned is an instance of :class:`_expression.TableClause` @@ -1938,10 +1938,15 @@ class TableClause(Immutable, FromClause): be imported from the plain ``sqlalchemy`` namespace like any other SQL element. + :param name: Name of the table. :param columns: A collection of :func:`_expression.column` constructs. + :param schema: The schema name for this table. + + .. versionadded:: 1.3.17 :func:`_expression.table` can now + accept a ``schema`` argument. """ super(TableClause, self).__init__() @@ -1952,6 +1957,12 @@ class TableClause(Immutable, FromClause): for c in columns: self.append_column(c) + schema = kw.pop("schema", None) + if schema is not None: + self.schema = schema + if kw: + raise exc.ArgumentError("Unsupported argument(s): %s" % list(kw)) + def _refresh_for_new_column(self, column): pass -- cgit v1.2.1