diff options
author | Federico Caselli <cfederico87@gmail.com> | 2021-10-01 20:18:34 +0200 |
---|---|---|
committer | Federico Caselli <cfederico87@gmail.com> | 2021-10-01 20:18:34 +0200 |
commit | 8c67fac9033e75d144b51f1f365097fdbf17c497 (patch) | |
tree | ea1cda629cbde44822298bd37c6f3f44d1492190 | |
parent | ab6605aee23ed2c70c38bd5b9f50a6395ac3f2e1 (diff) | |
download | sqlalchemy-8c67fac9033e75d144b51f1f365097fdbf17c497.tar.gz |
Account for `schema` in `table()` `fullname` attribute.
Fixes: #7061
Change-Id: I715da89591c03d40d77734473bd42b34b9c4e1dc
-rw-r--r-- | doc/build/changelog/unreleased_14/7061.rst | 5 | ||||
-rw-r--r-- | lib/sqlalchemy/sql/selectable.py | 6 | ||||
-rw-r--r-- | test/sql/test_selectable.py | 8 |
3 files changed, 18 insertions, 1 deletions
diff --git a/doc/build/changelog/unreleased_14/7061.rst b/doc/build/changelog/unreleased_14/7061.rst new file mode 100644 index 000000000..a7a184b85 --- /dev/null +++ b/doc/build/changelog/unreleased_14/7061.rst @@ -0,0 +1,5 @@ +.. change:: + :tags: bug, sql + :tickets: 7061 + + Account for ``schema`` in :func:`_sql.table` ``fullname`` attribute. diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py index 970c7a0c5..8f8e6b2a7 100644 --- a/lib/sqlalchemy/sql/selectable.py +++ b/lib/sqlalchemy/sql/selectable.py @@ -2622,7 +2622,7 @@ class TableClause(roles.DMLTableRole, Immutable, FromClause): """ super(TableClause, self).__init__() - self.name = self.fullname = name + self.name = name self._columns = DedupeColumnCollection() self.primary_key = ColumnSet() self.foreign_keys = set() @@ -2632,6 +2632,10 @@ class TableClause(roles.DMLTableRole, Immutable, FromClause): schema = kw.pop("schema", None) if schema is not None: self.schema = schema + if self.schema is not None: + self.fullname = "%s.%s" % (self.schema, self.name) + else: + self.fullname = self.name if kw: raise exc.ArgumentError("Unsupported argument(s): %s" % list(kw)) diff --git a/test/sql/test_selectable.py b/test/sql/test_selectable.py index b76873490..2157b5c71 100644 --- a/test/sql/test_selectable.py +++ b/test/sql/test_selectable.py @@ -1469,6 +1469,14 @@ class SelectableTest( assert s3._whereclause.left.table is not s1 assert s3._whereclause.left.table in froms + def test_table_schema(self): + t = table("foo") + eq_(t.name, "foo") + eq_(t.fullname, "foo") + t = table("foo", schema="bar") + eq_(t.name, "foo") + eq_(t.fullname, "bar.foo") + class RefreshForNewColTest(fixtures.TestBase): def test_join_uninit(self): |