result.inserted_primary_key
- schema
+ - the `__contains__()` method of `MetaData` now accepts
+ strings or `Table` objects as arguments. If given
+ a `Table`, the argument is converted to `table.key` first,
+ i.e. "[schemaname.]<tablename>" [ticket:1541]
+
- deprecated MetaData.connect() and
ThreadLocalMetaData.connect() have been removed - send
the "bind" attribute to bind a metadata.
def __repr__(self):
return 'MetaData(%r)' % self.bind
- def __contains__(self, key):
- return key in self.tables
+ def __contains__(self, table_or_key):
+ if not isinstance(table_or_key, basestring):
+ table_or_key = table_or_key.key
+ return table_or_key in self.tables
def __getstate__(self):
return {'tables': self.tables}
finally:
metadata.drop_all()
-
+ def test_metadata_contains(self):
+ metadata = MetaData()
+ t1 = Table('t1', metadata, Column('x', Integer))
+ t2 = Table('t2', metadata, Column('x', Integer), schema='foo')
+ t3 = Table('t2', MetaData(), Column('x', Integer))
+ t4 = Table('t1', MetaData(), Column('x', Integer), schema='foo')
+
+ assert "t1" in metadata
+ assert "foo.t2" in metadata
+ assert "t2" not in metadata
+ assert "foo.t1" not in metadata
+ assert t1 in metadata
+ assert t2 in metadata
+ assert t3 not in metadata
+ assert t4 not in metadata
+
def test_dupe_tables(self):
metadata = MetaData()
t1 = Table('table1', metadata, Column('col1', Integer, primary_key=True),