diff options
author | Roman Podoliaka <roman.podoliaka@gmail.com> | 2014-03-10 17:34:42 -0700 |
---|---|---|
committer | Roman Podoliaka <roman.podoliaka@gmail.com> | 2014-03-12 17:56:42 -0700 |
commit | 0bb00db558123209c3ffb8eab580dcf1823f36b4 (patch) | |
tree | 03fdf81ab5084bceabc44302b8dc7456433442a0 | |
parent | 36792434c74dea43a0f10f5fe1cc45c4206f01ee (diff) | |
download | sqlalchemy-pr/78.tar.gz |
Remove tables from metadata when autoload failspr/78
If autoloading of a table fails, don't register it in a metadata
instance. It seems that the original behaviour was accidentally
changed in f6198d9abf453182f4b111e0579a7a4ef1614e79, restore it.
Closes issue #2988
-rw-r--r-- | lib/sqlalchemy/sql/schema.py | 2 | ||||
-rw-r--r-- | test/engine/test_reflection.py | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py index abca124a4..e29fe456f 100644 --- a/lib/sqlalchemy/sql/schema.py +++ b/lib/sqlalchemy/sql/schema.py @@ -353,7 +353,7 @@ class Table(DialectKWArgs, SchemaItem, TableClause): table.dispatch.after_parent_attach(table, metadata) return table except: - #metadata._remove_table(name, schema) + metadata._remove_table(name, schema) raise diff --git a/test/engine/test_reflection.py b/test/engine/test_reflection.py index a46c7372e..446bb8a36 100644 --- a/test/engine/test_reflection.py +++ b/test/engine/test_reflection.py @@ -92,6 +92,7 @@ class ReflectionTest(fixtures.TestBase, ComparesTables): meta = MetaData(testing.db) assert_raises(sa.exc.NoSuchTableError, Table, 'nonexistent', meta, autoload=True) + assert 'nonexistent' not in meta.tables @testing.provide_metadata def test_include_columns(self): |