From: Roman Podoliaka Date: Tue, 11 Mar 2014 00:34:42 +0000 (-0700) Subject: Remove tables from metadata when autoload fails X-Git-Tag: rel_0_9_4~47^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0bb00db558123209c3ffb8eab580dcf1823f36b4;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Remove tables from metadata when autoload fails 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 --- diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py index abca124a45..e29fe456f1 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 a46c7372ec..446bb8a360 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):