From ad8f921e969b6f735dc8e08d882c961dde78f2b1 Mon Sep 17 00:00:00 2001 From: Malik Diarra Date: Thu, 7 Aug 2014 21:50:49 +0200 Subject: [PATCH] Providing an autoload_with info automatically sets autoload to True --- lib/sqlalchemy/sql/schema.py | 4 ++-- test/engine/test_reflection.py | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py index f3af46c40f..5c68b5aec9 100644 --- a/lib/sqlalchemy/sql/schema.py +++ b/lib/sqlalchemy/sql/schema.py @@ -401,8 +401,8 @@ class Table(DialectKWArgs, SchemaItem, TableClause): else: self.fullname = self.name - autoload = kwargs.pop('autoload', False) autoload_with = kwargs.pop('autoload_with', None) + autoload = kwargs.pop('autoload', autoload_with is not None) # this argument is only used with _init_existing() kwargs.pop('autoload_replace', True) include_columns = kwargs.pop('include_columns', None) @@ -460,8 +460,8 @@ class Table(DialectKWArgs, SchemaItem, TableClause): return sorted(self.constraints, key=lambda c: c._creation_order) def _init_existing(self, *args, **kwargs): - autoload = kwargs.pop('autoload', False) autoload_with = kwargs.pop('autoload_with', None) + autoload = kwargs.pop('autoload', autoload_with is not None) autoload_replace = kwargs.pop('autoload_replace', True) schema = kwargs.pop('schema', None) if schema and schema != self.schema: diff --git a/test/engine/test_reflection.py b/test/engine/test_reflection.py index 03b2033d54..807abc84f7 100644 --- a/test/engine/test_reflection.py +++ b/test/engine/test_reflection.py @@ -64,6 +64,22 @@ class ReflectionTest(fixtures.TestBase, ComparesTables): self.assert_tables_equal(users, reflected_users) self.assert_tables_equal(addresses, reflected_addresses) + @testing.provide_metadata + def test_autoload_with_imply_autoload(self,): + meta = self.metadata + t = Table( + 't', + meta, + Column('id', sa.Integer, primary_key=True), + Column('x', sa.String(20)), + Column('y', sa.Integer)) + meta.create_all() + + meta2 = MetaData() + reflected_t = Table('t', meta2, + autoload_with=testing.db) + self.assert_tables_equal(t, reflected_t) + @testing.provide_metadata def test_two_foreign_keys(self): meta = self.metadata -- 2.47.3