From 55c26710a1f6d6c6f87a9752035bc160f93b38d0 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 10 Apr 2015 11:20:14 -0400 Subject: - Fixed issue where a :class:`.MetaData` object that used a naming convention would not properly work with pickle. The attribute was skipped leading to inconsistencies and failures if the unpickled :class:`.MetaData` object were used to base additional tables from. fixes #3362 --- test/sql/test_metadata.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'test/sql') diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py index 65e1e60ce..db5e73e52 100644 --- a/test/sql/test_metadata.py +++ b/test/sql/test_metadata.py @@ -3575,3 +3575,16 @@ class NamingConventionTest(fixtures.TestBase, AssertsCompiledSQL): u1.append_constraint(ck1) eq_(ck1.name, "ck_user_foo") + + def test_pickle_metadata(self): + m = MetaData(naming_convention={"pk": "%(table_name)s_pk"}) + + m2 = pickle.loads(pickle.dumps(m)) + + eq_(m2.naming_convention, {"pk": "%(table_name)s_pk"}) + + t2a = Table('t2', m, Column('id', Integer, primary_key=True)) + t2b = Table('t2', m2, Column('id', Integer, primary_key=True)) + + eq_(t2a.primary_key.name, t2b.primary_key.name) + eq_(t2b.primary_key.name, "t2_pk") -- cgit v1.2.1