summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/schema.py3
-rw-r--r--test/engine/test_reflection.py7
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py
index b5b057625..496d8e652 100644
--- a/lib/sqlalchemy/schema.py
+++ b/lib/sqlalchemy/schema.py
@@ -357,6 +357,9 @@ class Table(SchemaItem, expression.TableClause):
self._init_items(*args)
def _autoload(self, metadata, autoload_with, include_columns):
+ if self.primary_key.columns:
+ PrimaryKeyConstraint()._set_parent_with_dispatch(self)
+
if autoload_with:
autoload_with.run_callable(
autoload_with.dialect.reflecttable,
diff --git a/test/engine/test_reflection.py b/test/engine/test_reflection.py
index 4e80e71e4..7cccb930b 100644
--- a/test/engine/test_reflection.py
+++ b/test/engine/test_reflection.py
@@ -123,6 +123,7 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
meta = self.metadata
t1 = Table('t', meta,
+ Column('id', Integer, primary_key=True),
Column('x', Integer),
Column('y', Integer),
Column('z', Integer, server_default="5"),
@@ -130,18 +131,20 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
meta.create_all()
m2 = MetaData()
- old_z = Column('z', String)
+ old_z = Column('z', String, primary_key=True)
old_y = Column('y', String)
old_q = Column('q', Integer)
t2 = Table('t', m2, old_z, old_q)
+ eq_(t2.primary_key.columns, (t2.c.z, ))
t2 = Table('t', m2, old_y,
extend_existing=True,
autoload=True,
autoload_with=testing.db)
eq_(
set(t2.columns.keys()),
- set(['x', 'y', 'z', 'q'])
+ set(['x', 'y', 'z', 'q', 'id'])
)
+ eq_(t2.primary_key.columns, (t2.c.id, ))
assert t2.c.z is not old_z
assert t2.c.y is old_y
assert t2.c.z.type._type_affinity is Integer