From 4bcb4c98f9756882b986d5c31fc19065b4a1fd1c Mon Sep 17 00:00:00 2001 From: Chris Withers Date: Thu, 16 Sep 2010 21:10:17 +0100 Subject: [PATCH] add warning about dodgy use of tometadata --- lib/sqlalchemy/schema.py | 6 +++++- test/engine/test_metadata.py | 25 ++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index fc5dd33df3..99e8c2a8c3 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -471,7 +471,11 @@ class Table(SchemaItem, expression.TableClause): if schema is RETAIN_SCHEMA: schema = self.schema key = _get_table_key(self.name, schema) - return metadata.tables[key] + result = metadata.tables[key] + util.warn('tometadata will raise an exception ' + 'when a table already exists in the ' + 'target metadata in SQLAlchemy 0.7') + return result except KeyError: args = [] for c in self.columns: diff --git a/test/engine/test_metadata.py b/test/engine/test_metadata.py index a99188f15e..ace7ab1962 100644 --- a/test/engine/test_metadata.py +++ b/test/engine/test_metadata.py @@ -1,4 +1,7 @@ -from sqlalchemy.test.testing import assert_raises, assert_raises_message +from sqlalchemy.test.testing import assert_raises +from sqlalchemy.test.testing import assert_raises_message +from sqlalchemy.test.testing import emits_warning + import pickle from sqlalchemy import Integer, String, UniqueConstraint, \ CheckConstraint, ForeignKey, MetaData, Sequence, \ @@ -284,6 +287,26 @@ class MetaDataTest(TestBase, ComparesTables): eq_(table_indexes,table_c_indexes) + @emits_warning('tometadata.*') + def test_tometadata_already_there(self): + + meta1 = MetaData() + table1 = Table('mytable', meta1, + Column('myid', Integer, primary_key=True), + ) + meta2 = MetaData() + table2 = Table('mytable', meta2, + Column('yourid', Integer, primary_key=True), + ) + + meta3 = MetaData() + + table_c = table1.tometadata(meta2) + table_d = table2.tometadata(meta2) + + # d'oh! + assert table_c is table_d + def test_tometadata_default_schema(self): meta = MetaData() -- 2.47.2