summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Podoliaka <roman.podoliaka@gmail.com>2014-03-10 17:34:42 -0700
committerRoman Podoliaka <roman.podoliaka@gmail.com>2014-03-12 17:56:42 -0700
commit0bb00db558123209c3ffb8eab580dcf1823f36b4 (patch)
tree03fdf81ab5084bceabc44302b8dc7456433442a0
parent36792434c74dea43a0f10f5fe1cc45c4206f01ee (diff)
downloadsqlalchemy-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.py2
-rw-r--r--test/engine/test_reflection.py1
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):