From 472fa072a6c444b42e3b93ff290a332b4ce7c73e Mon Sep 17 00:00:00 2001 From: Jason Kirtland Date: Fri, 6 Jul 2007 00:55:41 +0000 Subject: [PATCH] - renamed DynamicMetaData to ThreadLocalMetaData - removed BoundMetaData, use MetaData instead --- CHANGES | 2 + doc/build/content/dbengine.txt | 2 +- doc/build/content/metadata.txt | 24 +++++++----- doc/build/content/plugins.txt | 4 +- doc/build/content/sqlconstruction.txt | 4 +- doc/build/content/tutorial.txt | 11 +++--- examples/adjacencytree/basic_tree.py | 2 +- examples/adjacencytree/byroot_tree.py | 2 +- examples/association/basic_association.py | 2 +- examples/association/proxied_association.py | 2 +- examples/collections/large_collection.py | 2 +- examples/graphs/graph1.py | 2 +- examples/pickle/custom_pickler.py | 4 +- examples/polymorph/polymorph.py | 2 +- examples/polymorph/single.py | 2 +- examples/vertical/vertical.py | 4 +- lib/sqlalchemy/ext/activemapper.py | 4 +- lib/sqlalchemy/ext/sqlsoup.py | 4 +- lib/sqlalchemy/schema.py | 42 +++++++-------------- test/dialect/mysql.py | 10 ++--- test/dialect/postgres.py | 24 ++++++------ test/engine/execute.py | 2 +- test/engine/reflection.py | 28 +++++++------- test/ext/assignmapper.py | 2 +- test/ext/associationproxy.py | 6 +-- test/ext/orderinglist.py | 2 +- test/ext/selectresults.py | 6 +-- test/orm/association.py | 4 +- test/orm/assorted_eager.py | 4 +- test/orm/cascade.py | 6 +-- test/orm/compile.py | 6 +-- test/orm/cycles.py | 16 ++++---- test/orm/entity.py | 2 +- test/orm/generative.py | 6 +-- test/orm/inheritance/polymorph2.py | 2 +- test/orm/inheritance/single.py | 2 +- test/orm/lazytest1.py | 2 +- test/orm/memusage.py | 2 +- test/orm/onetoone.py | 2 +- test/orm/relationships.py | 4 +- test/orm/unitofwork.py | 16 ++++---- test/perf/cascade_speed.py | 4 +- test/perf/masseagerload.py | 2 +- test/perf/massload.py | 2 +- test/perf/masssave.py | 2 +- test/perf/poolload.py | 2 +- test/perf/threaded_compile.py | 2 +- test/perf/wsgi.py | 6 +-- test/sql/case_statement.py | 2 +- test/sql/constraints.py | 2 +- test/sql/defaults.py | 14 +++---- test/sql/query.py | 14 +++---- test/sql/quote.py | 6 +-- test/sql/rowcount.py | 2 +- test/sql/selectable.py | 2 +- test/sql/testtypes.py | 14 +++---- test/sql/unicode.py | 2 +- test/tables.py | 2 +- test/testbase.py | 6 +-- 59 files changed, 179 insertions(+), 182 deletions(-) diff --git a/CHANGES b/CHANGES index f1f95230df..c658896d5e 100644 --- a/CHANGES +++ b/CHANGES @@ -73,6 +73,8 @@ columns joined by a "group" to load as "undeferred". - sql + - DynamicMetaData has been renamed to ThreadLocalMetaData + - BoundMetaData has been removed- regular MetaData is equivalent - significant architectural overhaul to SQL elements (ClauseElement). all elements share a common "mutability" framework which allows a consistent approach to in-place modifications of elements as well as diff --git a/doc/build/content/dbengine.txt b/doc/build/content/dbengine.txt index 412a0c7a71..3ba23f402f 100644 --- a/doc/build/content/dbengine.txt +++ b/doc/build/content/dbengine.txt @@ -252,7 +252,7 @@ Using "bound" metadata: {python title="Implicit Execution Using Engine-Bound SQL Construct"} engine = create_engine('sqlite:///:memory:') - meta = BoundMetaData(engine) + meta = MetaData(engine) table = Table('mytable', meta, Column('col1', Integer), Column('col2', String(20))) r = table.insert().execute(col1=5, col2='some record') diff --git a/doc/build/content/metadata.txt b/doc/build/content/metadata.txt index 01d5646cce..2ffb279f4d 100644 --- a/doc/build/content/metadata.txt +++ b/doc/build/content/metadata.txt @@ -121,21 +121,27 @@ And `Table` provides an interface to the table's properties as well as that of i A MetaData object can be associated with one or more Engine instances. This allows the MetaData and the elements within it to perform operations automatically, using the connection resources of that Engine. This includes being able to "reflect" the columns of tables, as well as to perform create and drop operations without needing to pass an `Engine` or `Connection` around. It also allows SQL constructs to be created which know how to execute themselves (called "implicit execution"). -To bind `MetaData` to a single `Engine`, use `BoundMetaData`: +To bind `MetaData` to a single `Engine`, supply an Engine when creating the Meta +Data, or use the `.connect()` method: {python} engine = create_engine('sqlite://', **kwargs) - # create BoundMetaData from an Engine - meta = BoundMetaData(engine) + # create MetaData from an Engine + meta = MetaData(engine) # create the Engine and MetaData in one step - meta = BoundMetaData('postgres://db/', **kwargs) + meta = MetaData('postgres://db/', **kwargs) + + # or bind the engine later + meta = MetaData() + # ... + meta.connect(engine) Another form of `MetaData` exits which can connect to an engine within the current thread (or "on a per-thread basis"), allowing other threads to be connected to different engines simultaneously: {python} - meta = DynamicMetaData() + meta = ThreadLocalMetaData() # In thread 1, connect to an existing Engine meta.connect(engine) @@ -143,7 +149,7 @@ Another form of `MetaData` exits which can connect to an engine within the curre # Meanwhile in thread 2, create a new Engine and connect meta.connect('mysq://user@host/dsn') -`DynamicMetaData` is intended for applications that need to use the same set of `Tables` for many different database connections in the same process, such as a CherryPy web application which handles multiple application instances in one process. +`ThreadLocalMetaData` is intended for applications that need to use the same set of `Tables` for many different database connections in the same process, such as a CherryPy web application which handles multiple application instances in one process. #### Using the global Metadata object @@ -169,7 +175,7 @@ Some users prefer to create `Table` objects without specifying a `MetaData` obje #### Reflecting Tables -Once you have a `BoundMetaData` or a connected `DynamicMetaData`, you can create `Table` objects without specifying their columns, just their names, using `autoload=True`: +Once you have a connected `MetaData` or `ThreadLocalMetaData`, you can create `Table` objects without specifying their columns, just their names, using `autoload=True`: {python} >>> messages = Table('messages', meta, autoload = True) @@ -291,7 +297,7 @@ To force quoting for an identifier, set the "quote=True" flag on `Column` or `Ta Creating and dropping individual tables can be done via the `create()` and `drop()` methods of `Table`; these methods take an optional `connectable` parameter which references an `Engine` or a `Connection`. If not supplied, the `Engine` bound to the `MetaData` will be used, else an error is raised: {python} - meta = BoundMetaData('sqlite:///:memory:') + meta = MetaData('sqlite:///:memory:') employees = Table('employees', meta, Column('employee_id', Integer, primary_key=True), Column('employee_name', String(60), nullable=False, key='name'), @@ -560,7 +566,7 @@ A `Table` object created against a specific `MetaData` object can be re-created {python} # create two metadata - meta1 = BoundMetaData('sqlite:///querytest.db') + meta1 = MetaData('sqlite:///querytest.db') meta2 = MetaData() # load 'users' from the sqlite engine diff --git a/doc/build/content/plugins.txt b/doc/build/content/plugins.txt index 2071b13859..a06a92b1a1 100644 --- a/doc/build/content/plugins.txt +++ b/doc/build/content/plugins.txt @@ -474,7 +474,7 @@ To use `objectstore`: import sqlalchemy.mods.threadlocal from sqlalchemy import * - metadata = BoundMetaData('sqlite:///') + metadata = MetaData('sqlite:///') user_table = Table('users', metadata, Column('user_id', Integer, primary_key=True), Column('user_name', String(50), nullable=False) @@ -501,7 +501,7 @@ To use `assign_mapper`: import sqlalchemy.mods.threadlocal from sqlalchemy import * - metadata = BoundMetaData('sqlite:///') + metadata = MetaData('sqlite:///') user_table = Table('users', metadata, Column('user_id', Integer, primary_key=True), Column('user_name', String(50), nullable=False) diff --git a/doc/build/content/sqlconstruction.txt b/doc/build/content/sqlconstruction.txt index 1996b5de4b..e8077f5bd1 100644 --- a/doc/build/content/sqlconstruction.txt +++ b/doc/build/content/sqlconstruction.txt @@ -9,11 +9,11 @@ Executing a `ClauseElement` structure can be performed in two general ways. You The examples below all include a dump of the generated SQL corresponding to the query object, as well as a dump of the statement's bind parameters. In all cases, bind parameters are shown as named parameters using the colon format (i.e. ':name'). When the statement is compiled into a database-specific version, the named-parameter statement and its bind values are converted to the proper paramstyle for that database automatically. -For this section, we will mostly use the implcit style of execution, meaning the `Table` objects are associated with an instance of `BoundMetaData`, and constructed `ClauseElement` objects support self-execution. Assume the following configuration: +For this section, we will mostly use the implcit style of execution, meaning the `Table` objects are associated with a bound instance of `MetaData`, and constructed `ClauseElement` objects support self-execution. Assume the following configuration: {python} from sqlalchemy import * - metadata = BoundMetaData('sqlite:///mydb.db', echo=True) + metadata = MetaData('sqlite:///mydb.db', echo=True) # a table to store users users = Table('users', metadata, diff --git a/doc/build/content/tutorial.txt b/doc/build/content/tutorial.txt index 63c28860dd..464d3044bc 100644 --- a/doc/build/content/tutorial.txt +++ b/doc/build/content/tutorial.txt @@ -82,15 +82,16 @@ Working with Database Objects {@name=schemasql} ### Defining Metadata, Binding to Engines {@name=metadata} -Configuring SQLAlchemy for your database consists of creating objects called `Tables`, each of which represent an actual table in the database. A collection of `Table` objects resides in a `MetaData` object which is essentially a table collection. We will create a handy form of `MetaData` that automatically connects to our `Engine` (connecting a schema object to an Engine is called *binding*): +Configuring SQLAlchemy for your database consists of creating objects called `Tables`, each of which represent an actual table in the database. A collection of `Table` objects resides in a `MetaData` object which is essentially a table collection. We will create a `MetaData` and connect it to our `Engine` (connecting a schema object to an Engine is called *binding*): {python} - >>> metadata = BoundMetaData(db) + >>> metadata = MetaData() + >>> metadata.connect(db) -An equivalent operation is to create the `BoundMetaData` object directly with an Engine URL, which calls the `create_engine` call for us: +An equivalent operation is to create the `MetaData` object directly with an Engine URL, which calls the `create_engine` call for us: {python} - >>> metadata = BoundMetaData('sqlite:///tutorial.db') + >>> metadata = MetaData('sqlite:///tutorial.db') Now, when we tell "metadata" about the tables in our database, we can issue CREATE statements for those tables, as well as execute SQL statements derived from them, without needing to open or close any connections; that will be all done automatically. @@ -107,7 +108,7 @@ With `metadata` as our established home for tables, lets make a Table for it: ... Column('password', String(10)) ... ) -As you might have guessed, we have just defined a table named `users` which has three columns: `user_id` (which is a primary key column), `user_name` and `password`. Currently it is just an object that doesn't necessarily correspond to an existing table in our database. To actually create the table, we use the `create()` method. To make it interesting, we will have SQLAlchemy echo the SQL statements it sends to the database, by setting the `echo` flag on the `Engine` associated with our `BoundMetaData`: +As you might have guessed, we have just defined a table named `users` which has three columns: `user_id` (which is a primary key column), `user_name` and `password`. Currently it is just an object that doesn't necessarily correspond to an existing table in our database. To actually create the table, we use the `create()` method. To make it interesting, we will have SQLAlchemy echo the SQL statements it sends to the database, by setting the `echo` flag on the `Engine` associated with our `MetaData`: {python} >>> metadata.engine.echo = True diff --git a/examples/adjacencytree/basic_tree.py b/examples/adjacencytree/basic_tree.py index 3f4f64e3f9..9676fae89c 100644 --- a/examples/adjacencytree/basic_tree.py +++ b/examples/adjacencytree/basic_tree.py @@ -3,7 +3,7 @@ from sqlalchemy import * from sqlalchemy.util import OrderedDict -metadata = BoundMetaData('sqlite:///', echo=True) +metadata = MetaData('sqlite:///', echo=True) trees = Table('treenodes', metadata, Column('node_id', Integer, Sequence('treenode_id_seq',optional=False), primary_key=True), diff --git a/examples/adjacencytree/byroot_tree.py b/examples/adjacencytree/byroot_tree.py index cea3f9758b..a61bde8757 100644 --- a/examples/adjacencytree/byroot_tree.py +++ b/examples/adjacencytree/byroot_tree.py @@ -8,7 +8,7 @@ from sqlalchemy.orm.collections import attribute_mapped_collection engine = create_engine('sqlite:///:memory:', echo=True) -metadata = BoundMetaData(engine) +metadata = MetaData(engine) """create the treenodes table. This is ia basic adjacency list model table. One additional column, "root_node_id", references a "root node" row and is used diff --git a/examples/association/basic_association.py b/examples/association/basic_association.py index 5ce6436717..fabfdfa783 100644 --- a/examples/association/basic_association.py +++ b/examples/association/basic_association.py @@ -17,7 +17,7 @@ logging.basicConfig(format='%(message)s') logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) engine = create_engine('sqlite://') -metadata = BoundMetaData(engine) +metadata = MetaData(engine) orders = Table('orders', metadata, Column('order_id', Integer, primary_key=True), diff --git a/examples/association/proxied_association.py b/examples/association/proxied_association.py index 31a64ce7a0..2dd60158b9 100644 --- a/examples/association/proxied_association.py +++ b/examples/association/proxied_association.py @@ -11,7 +11,7 @@ logging.basicConfig(format='%(message)s') #logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) engine = create_engine('sqlite://') -metadata = BoundMetaData(engine) +metadata = MetaData(engine) orders = Table('orders', metadata, Column('order_id', Integer, primary_key=True), diff --git a/examples/collections/large_collection.py b/examples/collections/large_collection.py index 743624e993..d592441ab9 100644 --- a/examples/collections/large_collection.py +++ b/examples/collections/large_collection.py @@ -1,7 +1,7 @@ """illlustrates techniques for dealing with very large collections""" from sqlalchemy import * -meta = BoundMetaData('sqlite://', echo=True) +meta = MetaData('sqlite://', echo=True) org_table = Table('organizations', meta, Column('org_id', Integer, primary_key=True), diff --git a/examples/graphs/graph1.py b/examples/graphs/graph1.py index af75d0ff54..c2eec44f9f 100644 --- a/examples/graphs/graph1.py +++ b/examples/graphs/graph1.py @@ -6,7 +6,7 @@ import logging logging.basicConfig() logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) -meta = BoundMetaData('sqlite://') +meta = MetaData('sqlite://') nodes = Table('nodes', meta, Column("nodeid", Integer, primary_key=True) diff --git a/examples/pickle/custom_pickler.py b/examples/pickle/custom_pickler.py index 34a2ff0e59..4b259c1f86 100644 --- a/examples/pickle/custom_pickler.py +++ b/examples/pickle/custom_pickler.py @@ -6,7 +6,7 @@ from cStringIO import StringIO from pickle import Pickler, Unpickler import threading -meta = BoundMetaData('sqlite://', echo=True) +meta = MetaData('sqlite://', echo=True) class MyExt(MapperExtension): def populate_instance(self, mapper, selectcontext, row, instance, identitykey, isnew): @@ -79,4 +79,4 @@ sess.clear() del MyPickler.sessions.current f = sess.query(Foo).get(f.id) -assert f.bar.data == 'some bar' \ No newline at end of file +assert f.bar.data == 'some bar' diff --git a/examples/polymorph/polymorph.py b/examples/polymorph/polymorph.py index d5d747d36c..498bfa775c 100644 --- a/examples/polymorph/polymorph.py +++ b/examples/polymorph/polymorph.py @@ -4,7 +4,7 @@ import sets # this example illustrates a polymorphic load of two classes -metadata = BoundMetaData('sqlite://', echo=True) +metadata = MetaData('sqlite://', echo=True) # a table to store companies companies = Table('companies', metadata, diff --git a/examples/polymorph/single.py b/examples/polymorph/single.py index 11455a5905..dcdb3c8906 100644 --- a/examples/polymorph/single.py +++ b/examples/polymorph/single.py @@ -1,6 +1,6 @@ from sqlalchemy import * -metadata = BoundMetaData('sqlite://', echo='debug') +metadata = MetaData('sqlite://', echo='debug') # a table to store companies companies = Table('companies', metadata, diff --git a/examples/vertical/vertical.py b/examples/vertical/vertical.py index f470fbd191..75e56935c8 100644 --- a/examples/vertical/vertical.py +++ b/examples/vertical/vertical.py @@ -7,7 +7,7 @@ from sqlalchemy.orm import * from sqlalchemy.orm.collections import mapped_collection import datetime -e = BoundMetaData('sqlite://', echo=True) +e = MetaData('sqlite://', echo=True) # this table represents Entity objects. each Entity gets a row in this table, # with a primary key and a title. @@ -171,4 +171,4 @@ for entity in entities: for entity in entities: session.delete(entity) -session.flush() \ No newline at end of file +session.flush() diff --git a/lib/sqlalchemy/ext/activemapper.py b/lib/sqlalchemy/ext/activemapper.py index 3ba98f3457..eed38e3c05 100644 --- a/lib/sqlalchemy/ext/activemapper.py +++ b/lib/sqlalchemy/ext/activemapper.py @@ -1,4 +1,4 @@ -from sqlalchemy import join, DynamicMetaData, util, Integer +from sqlalchemy import join, ThreadLocalMetaData, util, Integer from sqlalchemy import and_, or_ from sqlalchemy import Table, Column, ForeignKey from sqlalchemy.orm import class_mapper, relation, mapper, create_session @@ -14,7 +14,7 @@ import sys # # the "proxy" to the database engine... this can be swapped out at runtime # -metadata = DynamicMetaData("activemapper") +metadata = ThreadLocalMetaData() try: objectstore = sqlalchemy.objectstore diff --git a/lib/sqlalchemy/ext/sqlsoup.py b/lib/sqlalchemy/ext/sqlsoup.py index a9b93bc564..9940610f75 100644 --- a/lib/sqlalchemy/ext/sqlsoup.py +++ b/lib/sqlalchemy/ext/sqlsoup.py @@ -22,7 +22,7 @@ engine:: or, you can re-use an existing metadata:: - >>> db = SqlSoup(BoundMetaData(e)) + >>> db = SqlSoup(MetaData(e)) You can optionally specify a schema within the database for your SqlSoup:: @@ -491,7 +491,7 @@ class SqlSoup: if args or kwargs: raise ArgumentError('Extra arguments not allowed when metadata is given') else: - metadata = BoundMetaData(*args, **kwargs) + metadata = MetaData(*args, **kwargs) self._metadata = metadata self._cache = {} self.schema = None diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index 12568bd4b5..3df300d8db 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -23,7 +23,7 @@ import copy, re, string __all__ = ['SchemaItem', 'Table', 'Column', 'ForeignKey', 'Sequence', 'Index', 'ForeignKeyConstraint', 'PrimaryKeyConstraint', 'CheckConstraint', 'UniqueConstraint', 'DefaultGenerator', 'Constraint', - 'MetaData', 'BoundMetaData', 'DynamicMetaData', 'SchemaVisitor', 'PassiveDefault', 'ColumnDefault'] + 'MetaData', 'ThreadLocalMetaData', 'SchemaVisitor', 'PassiveDefault', 'ColumnDefault'] class SchemaItem(object): """Base class for items that define a database schema.""" @@ -1044,7 +1044,7 @@ class MetaData(SchemaItem): __visit_name__ = 'metadata' - def __init__(self, url=None, engine=None, **kwargs): + def __init__(self, engine_or_url=None, **kwargs): """create a new MetaData object. url @@ -1060,12 +1060,15 @@ class MetaData(SchemaItem): all contained objects. defaults to True. """ - + + if engine_or_url is None: + # limited backwards compatability + engine_or_url = kwargs.get('url', None) or kwargs.get('engine', None) self.tables = {} self._engine = None self._set_casing_strategy(kwargs) - if engine or url: - self.connect(engine or url, **kwargs) + if engine_or_url: + self.connect(engine_or_url, **kwargs) def __getstate__(self): return {'tables':self.tables, 'casesensitive':self._case_sensitive_setting} @@ -1167,22 +1170,7 @@ class MetaData(SchemaItem): return self -class BoundMetaData(MetaData): - """``MetaData`` for which the first argument is a required Engine, url string, or URL instance. - - """ - - __visit_name__ = 'metadata' - - def __init__(self, engine_or_url, **kwargs): - from sqlalchemy.engine.url import URL - if isinstance(engine_or_url, basestring) or isinstance(engine_or_url, URL): - super(BoundMetaData, self).__init__(url=engine_or_url, **kwargs) - else: - super(BoundMetaData, self).__init__(engine=engine_or_url, **kwargs) - - -class DynamicMetaData(MetaData): +class ThreadLocalMetaData(MetaData): """Build upon ``MetaData`` to provide the capability to bind to multiple ``Engine`` implementations on a dynamically alterable, thread-local basis. @@ -1190,13 +1178,10 @@ thread-local basis. __visit_name__ = 'metadata' - def __init__(self, threadlocal=True, **kwargs): - if threadlocal: - self.context = util.ThreadLocal() - else: - self.context = self + def __init__(self, **kwargs): + self.context = util.ThreadLocal() self.__engines = {} - super(DynamicMetaData, self).__init__(**kwargs) + super(ThreadLocalMetaData, self).__init__(**kwargs) def connect(self, engine_or_url, **kwargs): from sqlalchemy.engine.url import URL @@ -1218,7 +1203,7 @@ thread-local basis. return hasattr(self.context, '_engine') and self.context._engine is not None def dispose(self): - """Dispose all ``Engines`` to which this ``DynamicMetaData`` has been connected.""" + """Dispose all ``Engines`` to which this ``ThreadLocalMetaData`` has been connected.""" for e in self.__engines.values(): e.dispose() @@ -1231,6 +1216,7 @@ thread-local basis. engine = property(_get_engine, connect) + class SchemaVisitor(sql.ClauseVisitor): """Define the visiting for ``SchemaItem`` objects.""" diff --git a/test/dialect/mysql.py b/test/dialect/mysql.py index 784993cc45..0e918abedd 100644 --- a/test/dialect/mysql.py +++ b/test/dialect/mysql.py @@ -105,7 +105,7 @@ class TypesTest(AssertMixin): 'SMALLINT(4) UNSIGNED ZEROFILL'), ] - table_args = ['test_mysql_numeric', BoundMetaData(db)] + table_args = ['test_mysql_numeric', MetaData(db)] for index, spec in enumerate(columns): type_, args, kw, res = spec table_args.append(Column('c%s' % index, type_(*args, **kw))) @@ -189,7 +189,7 @@ class TypesTest(AssertMixin): '''ENUM('foo','bar') UNICODE''') ] - table_args = ['test_mysql_charset', BoundMetaData(db)] + table_args = ['test_mysql_charset', MetaData(db)] for index, spec in enumerate(columns): type_, args, kw, res = spec table_args.append(Column('c%s' % index, type_(*args, **kw))) @@ -213,7 +213,7 @@ class TypesTest(AssertMixin): def test_enum(self): "Exercise the ENUM type" - enum_table = Table('mysql_enum', BoundMetaData(db), + enum_table = Table('mysql_enum', MetaData(db), Column('e1', mysql.MSEnum('"a"', "'b'")), Column('e2', mysql.MSEnum('"a"', "'b'"), nullable=False), Column('e3', mysql.MSEnum('"a"', "'b'", strict=True)), @@ -326,12 +326,12 @@ class TypesTest(AssertMixin): columns = [Column('c%i' % (i + 1), t[0]) for i, t in enumerate(specs)] - m = BoundMetaData(db) + m = MetaData(db) t_table = Table('mysql_types', m, *columns) m.drop_all() m.create_all() - m2 = BoundMetaData(db) + m2 = MetaData(db) rt = Table('mysql_types', m2, autoload=True) #print diff --git a/test/dialect/postgres.py b/test/dialect/postgres.py index d8607f2682..686417d7a9 100644 --- a/test/dialect/postgres.py +++ b/test/dialect/postgres.py @@ -28,35 +28,35 @@ class DomainReflectionTest(AssertMixin): @testbase.supported('postgres') def test_table_is_reflected(self): - metadata = BoundMetaData(db) + metadata = MetaData(db) table = Table('testtable', metadata, autoload=True) self.assertEquals(set(table.columns.keys()), set(['question', 'answer']), "Columns of reflected table didn't equal expected columns") self.assertEquals(table.c.answer.type.__class__, postgres.PGInteger) @testbase.supported('postgres') def test_domain_is_reflected(self): - metadata = BoundMetaData(db) + metadata = MetaData(db) table = Table('testtable', metadata, autoload=True) self.assertEquals(str(table.columns.answer.default.arg), '42', "Reflected default value didn't equal expected value") self.assertFalse(table.columns.answer.nullable, "Expected reflected column to not be nullable.") @testbase.supported('postgres') def test_table_is_reflected_alt_schema(self): - metadata = BoundMetaData(db) + metadata = MetaData(db) table = Table('testtable', metadata, autoload=True, schema='alt_schema') self.assertEquals(set(table.columns.keys()), set(['question', 'answer', 'anything']), "Columns of reflected table didn't equal expected columns") self.assertEquals(table.c.anything.type.__class__, postgres.PGInteger) @testbase.supported('postgres') def test_schema_domain_is_reflected(self): - metadata = BoundMetaData(db) + metadata = MetaData(db) table = Table('testtable', metadata, autoload=True, schema='alt_schema') self.assertEquals(str(table.columns.answer.default.arg), '0', "Reflected default value didn't equal expected value") self.assertTrue(table.columns.answer.nullable, "Expected reflected column to be nullable.") @testbase.supported('postgres') def test_crosschema_domain_is_reflected(self): - metadata = BoundMetaData(db) + metadata = MetaData(db) table = Table('crosschema', metadata, autoload=True) self.assertEquals(str(table.columns.answer.default.arg), '0', "Reflected default value didn't equal expected value") self.assertTrue(table.columns.answer.nullable, "Expected reflected column to be nullable.") @@ -64,14 +64,14 @@ class DomainReflectionTest(AssertMixin): class MiscTest(AssertMixin): @testbase.supported('postgres') def test_date_reflection(self): - m1 = BoundMetaData(testbase.db) + m1 = MetaData(testbase.db) t1 = Table('pgdate', m1, Column('date1', DateTime(timezone=True)), Column('date2', DateTime(timezone=False)) ) m1.create_all() try: - m2 = BoundMetaData(testbase.db) + m2 = MetaData(testbase.db) t2 = Table('pgdate', m2, autoload=True) assert t2.c.date1.type.timezone is True assert t2.c.date2.type.timezone is False @@ -80,7 +80,7 @@ class MiscTest(AssertMixin): @testbase.supported('postgres') def test_checksfor_sequence(self): - meta1 = BoundMetaData(testbase.db) + meta1 = MetaData(testbase.db) t = Table('mytable', meta1, Column('col1', Integer, Sequence('fooseq'))) try: @@ -93,7 +93,7 @@ class MiscTest(AssertMixin): def test_schema_reflection(self): """note: this test requires that the 'alt_schema' schema be separate and accessible by the test user""" - meta1 = BoundMetaData(testbase.db) + meta1 = MetaData(testbase.db) users = Table('users', meta1, Column('user_id', Integer, primary_key = True), Column('user_name', String(30), nullable = False), @@ -108,7 +108,7 @@ class MiscTest(AssertMixin): ) meta1.create_all() try: - meta2 = BoundMetaData(testbase.db) + meta2 = MetaData(testbase.db) addresses = Table('email_addresses', meta2, autoload=True, schema="alt_schema") users = Table('users', meta2, mustexist=True, schema="alt_schema") @@ -127,7 +127,7 @@ class MiscTest(AssertMixin): that PassiveDefault upon insert.""" try: - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) testbase.db.execute(""" CREATE TABLE speedy_users ( @@ -154,7 +154,7 @@ class TimezoneTest(AssertMixin): @testbase.supported('postgres') def setUpAll(self): global tztable, notztable, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) # current_timestamp() in postgres is assumed to return TIMESTAMP WITH TIMEZONE tztable = Table('tztable', metadata, diff --git a/test/engine/execute.py b/test/engine/execute.py index c8e23d3deb..5bc9dbfe91 100644 --- a/test/engine/execute.py +++ b/test/engine/execute.py @@ -9,7 +9,7 @@ from testbase import Table, Column class ExecuteTest(testbase.PersistTest): def setUpAll(self): global users, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) users = Table('users', metadata, Column('user_id', INT, primary_key = True), Column('user_name', VARCHAR(20)), diff --git a/test/engine/reflection.py b/test/engine/reflection.py index 1b6c73e28b..a1c1e325d6 100644 --- a/test/engine/reflection.py +++ b/test/engine/reflection.py @@ -38,7 +38,7 @@ class ReflectionTest(PersistTest): deftype2, deftype3 = Integer, Integer defval2, defval3 = "15", "16" - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) users = Table('engine_users', meta, Column('user_id', INT, primary_key = True), @@ -112,7 +112,7 @@ class ReflectionTest(PersistTest): def testoverridecolumns(self): """test that you can override columns which contain foreign keys to other reflected tables""" - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) users = Table('users', meta, Column('id', Integer, primary_key=True), Column('name', String(30))) @@ -123,7 +123,7 @@ class ReflectionTest(PersistTest): meta.create_all() try: - meta2 = BoundMetaData(testbase.db) + meta2 = MetaData(testbase.db) a2 = Table('addresses', meta2, Column('user_id', Integer, ForeignKey('users.id')), autoload=True) @@ -133,7 +133,7 @@ class ReflectionTest(PersistTest): assert list(a2.c.user_id.foreign_keys)[0].parent is a2.c.user_id assert u2.join(a2).onclause == u2.c.id==a2.c.user_id - meta3 = BoundMetaData(testbase.db) + meta3 = MetaData(testbase.db) u3 = Table('users', meta3, autoload=True) a3 = Table('addresses', meta3, Column('user_id', Integer, ForeignKey('users.id')), @@ -147,7 +147,7 @@ class ReflectionTest(PersistTest): def testoverridecolumns2(self): """test that you can override columns which contain foreign keys to other reflected tables, where the foreign key column is also a primary key column""" - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) users = Table('users', meta, Column('id', Integer, primary_key=True), Column('name', String(30))) @@ -158,7 +158,7 @@ class ReflectionTest(PersistTest): meta.create_all() try: - meta2 = BoundMetaData(testbase.db) + meta2 = MetaData(testbase.db) a2 = Table('addresses', meta2, Column('id', Integer, ForeignKey('users.id'), primary_key=True, ), autoload=True) @@ -177,7 +177,7 @@ class ReflectionTest(PersistTest): #sess.save(add1) #sess.flush() - meta3 = BoundMetaData(testbase.db) + meta3 = MetaData(testbase.db) u3 = Table('users', meta3, autoload=True) a3 = Table('addresses', meta3, Column('id', Integer, ForeignKey('users.id'), primary_key=True), @@ -192,7 +192,7 @@ class ReflectionTest(PersistTest): @testbase.supported('mysql') def testmysqltypes(self): - meta1 = BoundMetaData(testbase.db) + meta1 = MetaData(testbase.db) table = Table( 'mysql_types', meta1, Column('id', Integer, primary_key=True), @@ -208,7 +208,7 @@ class ReflectionTest(PersistTest): try: table.drop(checkfirst=True) table.create() - meta2 = BoundMetaData(testbase.db) + meta2 = MetaData(testbase.db) t2 = Table('mysql_types', meta2, autoload=True) assert isinstance(t2.c.num1.type, mysql.MSInteger) assert t2.c.num1.type.unsigned @@ -285,7 +285,7 @@ class ReflectionTest(PersistTest): ) """) try: - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) table1 = Table("django_admin_log", meta, autoload=True) table2 = Table("django_content_type", meta, autoload=True) j = table1.join(table2) @@ -300,7 +300,7 @@ class ReflectionTest(PersistTest): if (testbase.db.engine.name == 'mysql' and testbase.db.dialect.get_version_info(testbase.db) < (4, 1, 1)): return - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) table = Table( 'multi', meta, Column('multi_id', Integer, primary_key=True), @@ -417,10 +417,10 @@ class ReflectionTest(PersistTest): def test_nonexistent(self): self.assertRaises(NoSuchTableError, Table, 'fake_table', - BoundMetaData(testbase.db), autoload=True) + MetaData(testbase.db), autoload=True) def testoverride(self): - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) table = Table( 'override_test', meta, Column('col1', Integer, primary_key=True), @@ -430,7 +430,7 @@ class ReflectionTest(PersistTest): table.create() # clear out table registry - meta2 = BoundMetaData(testbase.db) + meta2 = MetaData(testbase.db) try: table = Table( 'override_test', meta2, diff --git a/test/ext/assignmapper.py b/test/ext/assignmapper.py index 17c10d3d72..8562a016a2 100644 --- a/test/ext/assignmapper.py +++ b/test/ext/assignmapper.py @@ -11,7 +11,7 @@ from testbase import Table, Column class OverrideAttributesTest(PersistTest): def setUpAll(self): global metadata, table, table2 - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) table = Table('sometable', metadata, Column('id', Integer, primary_key=True), Column('data', String(30))) diff --git a/test/ext/associationproxy.py b/test/ext/associationproxy.py index 68ad5da6ed..9b83830ca5 100644 --- a/test/ext/associationproxy.py +++ b/test/ext/associationproxy.py @@ -40,7 +40,7 @@ class _CollectionOperations(PersistTest): def setUp(self): collection_class = self.collection_class - metadata = BoundMetaData(db) + metadata = MetaData(db) parents_table = Table('Parent', metadata, Column('id', Integer, primary_key=True), @@ -476,7 +476,7 @@ class CustomObjectTest(_CollectionOperations): class ScalarTest(PersistTest): def test_scalar_proxy(self): - metadata = BoundMetaData(db) + metadata = MetaData(db) parents_table = Table('Parent', metadata, Column('id', Integer, primary_key=True), @@ -592,7 +592,7 @@ class ScalarTest(PersistTest): class LazyLoadTest(PersistTest): def setUp(self): - metadata = BoundMetaData(db) + metadata = MetaData(db) parents_table = Table('Parent', metadata, Column('id', Integer, primary_key=True), diff --git a/test/ext/orderinglist.py b/test/ext/orderinglist.py index 41348a6482..cf6ab038e4 100644 --- a/test/ext/orderinglist.py +++ b/test/ext/orderinglist.py @@ -54,7 +54,7 @@ class OrderingListTest(PersistTest): global metadata, slides_table, bullets_table, Slide, Bullet - metadata = BoundMetaData(db) + metadata = MetaData(db) slides_table = Table('test_Slides', metadata, Column('id', Integer, primary_key=True), Column('name', String)) diff --git a/test/ext/selectresults.py b/test/ext/selectresults.py index 8f77b323a6..16065cd966 100644 --- a/test/ext/selectresults.py +++ b/test/ext/selectresults.py @@ -15,7 +15,7 @@ class SelectResultsTest(PersistTest): def setUpAll(self): self.install_threadlocal() global foo, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) foo = Table('foo', metadata, Column('id', Integer, Sequence('foo_id_seq'), primary_key=True), Column('bar', Integer), @@ -109,7 +109,7 @@ class SelectResultsTest2(PersistTest): def setUpAll(self): self.install_threadlocal() global metadata, table1, table2 - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) table1 = Table('Table1', metadata, Column('id', Integer, primary_key=True), ) @@ -203,7 +203,7 @@ class CaseSensitiveTest(PersistTest): def setUpAll(self): self.install_threadlocal() global metadata, table1, table2 - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) table1 = Table('Table1', metadata, Column('ID', Integer, primary_key=True), ) diff --git a/test/orm/association.py b/test/orm/association.py index 61e9bce5f4..4bb8b97b4b 100644 --- a/test/orm/association.py +++ b/test/orm/association.py @@ -7,7 +7,7 @@ from testbase import Table, Column class AssociationTest(testbase.PersistTest): def setUpAll(self): global items, item_keywords, keywords, metadata, Item, Keyword, KeywordAssociation - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) items = Table('items', metadata, Column('item_id', Integer, primary_key=True), Column('name', String(40)), @@ -142,7 +142,7 @@ class AssociationTest(testbase.PersistTest): class AssociationTest2(testbase.PersistTest): def setUpAll(self): global table_originals, table_people, table_isauthor, metadata, Originals, People, IsAuthor - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) table_originals = Table('Originals', metadata, Column('ID', Integer, primary_key=True), Column('Title', String(200), nullable=False), diff --git a/test/orm/assorted_eager.py b/test/orm/assorted_eager.py index 77f5526610..e955c480de 100644 --- a/test/orm/assorted_eager.py +++ b/test/orm/assorted_eager.py @@ -11,7 +11,7 @@ import random, datetime class EagerTest(AssertMixin): def setUpAll(self): global dbmeta, owners, categories, tests, options, Owner, Category, Test, Option, false - dbmeta = BoundMetaData(testbase.db) + dbmeta = MetaData(testbase.db) # determine a literal value for "false" based on the dialect false = Boolean().dialect_impl(testbase.db.dialect).convert_bind_param(False, testbase.db.dialect) @@ -153,7 +153,7 @@ class EagerTest(AssertMixin): class EagerTest2(AssertMixin): def setUpAll(self): global metadata, middle, left, right - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) middle = Table('middle', metadata, Column('id', Integer, primary_key = True), Column('data', String(50)), diff --git a/test/orm/cascade.py b/test/orm/cascade.py index 27e8e7c8fe..d43f069bcb 100644 --- a/test/orm/cascade.py +++ b/test/orm/cascade.py @@ -187,7 +187,7 @@ class M2OCascadeTest(testbase.AssertMixin): def setUpAll(self): global ctx, data, metadata, User, Pref, Extra ctx = SessionContext(create_session) - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) extra = Table("extra", metadata, Column("extra_id", Integer, Sequence("extra_id_seq", optional=True), primary_key=True), Column("prefs_id", Integer, ForeignKey("prefs.prefs_id")) @@ -265,7 +265,7 @@ class M2OCascadeTest(testbase.AssertMixin): class M2MCascadeTest(testbase.AssertMixin): def setUpAll(self): global metadata, a, b, atob - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) a = Table('a', metadata, Column('id', Integer, primary_key=True), Column('data', String(30)) @@ -462,7 +462,7 @@ class DoubleParentOrphanTest(testbase.AssertMixin): def setUpAll(self): global metadata, address_table, businesses, homes - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) address_table = Table('addresses', metadata, Column('address_id', Integer, primary_key=True), Column('street', String(30)), diff --git a/test/orm/compile.py b/test/orm/compile.py index 85aa7c927e..ef5faa21dd 100644 --- a/test/orm/compile.py +++ b/test/orm/compile.py @@ -11,7 +11,7 @@ class CompileTest(testbase.AssertMixin): def testone(self): global metadata, order, employee, product, tax, orderproduct - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) order = Table('orders', metadata, Column('id', Integer, primary_key=True), @@ -72,7 +72,7 @@ class CompileTest(testbase.AssertMixin): def testtwo(self): """test that conflicting backrefs raises an exception""" global metadata, order, employee, product, tax, orderproduct - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) order = Table('orders', metadata, Column('id', Integer, primary_key=True), @@ -121,7 +121,7 @@ class CompileTest(testbase.AssertMixin): assert str(e).index("Backrefs do not match") > -1 def testthree(self): - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) node_table = Table("node", metadata, Column('node_id', Integer, primary_key=True), Column('name_index', Integer, nullable=True), diff --git a/test/orm/cycles.py b/test/orm/cycles.py index 6d4caf07b7..7e1716ca3b 100644 --- a/test/orm/cycles.py +++ b/test/orm/cycles.py @@ -28,7 +28,7 @@ class SelfReferentialTest(AssertMixin): """tests a self-referential mapper, with an additional list of child objects.""" def setUpAll(self): global t1, t2, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) t1 = Table('t1', metadata, Column('c1', Integer, Sequence('t1c1_id_seq', optional=True), primary_key=True), Column('parent_c1', Integer, ForeignKey('t1.c1')), @@ -130,7 +130,7 @@ class SelfReferentialNoPKTest(AssertMixin): """test self-referential relationship that joins on a column other than the primary key column""" def setUpAll(self): global table, meta - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) table = Table('item', meta, Column('id', Integer, primary_key=True), Column('uuid', String(32), unique=True, nullable=False), @@ -175,7 +175,7 @@ class SelfReferentialNoPKTest(AssertMixin): class InheritTestOne(AssertMixin): def setUpAll(self): global parent, child1, child2, meta - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) parent = Table("parent", meta, Column("id", Integer, primary_key=True), Column("parent_data", String(50)), @@ -377,7 +377,7 @@ class BiDirectionalOneToManyTest(AssertMixin): """tests two mappers with a one-to-many relation to each other.""" def setUpAll(self): global t1, t2, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) t1 = Table('t1', metadata, Column('c1', Integer, Sequence('t1c1_id_seq', optional=True), primary_key=True), Column('c2', Integer, ForeignKey('t2.c1')) @@ -418,7 +418,7 @@ class BiDirectionalOneToManyTest2(AssertMixin): """tests two mappers with a one-to-many relation to each other, with a second one-to-many on one of the mappers""" def setUpAll(self): global t1, t2, t3, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) t1 = Table('t1', metadata, Column('c1', Integer, Sequence('t1c1_id_seq', optional=True), primary_key=True), Column('c2', Integer, ForeignKey('t2.c1')), @@ -480,7 +480,7 @@ class OneToManyManyToOneTest(AssertMixin): raise an exception when dependencies are sorted.""" def setUpAll(self): global metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) global person global ball ball = Table('ball', metadata, @@ -768,7 +768,7 @@ class SelfReferentialPostUpdateTest(AssertMixin): """test using post_update on a single self-referential mapper""" def setUpAll(self): global metadata, node_table - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) node_table = Table('node', metadata, Column('id', Integer, Sequence('nodeid_id_seq', optional=True), primary_key=True), Column('path', String(50), nullable=False), @@ -871,7 +871,7 @@ class SelfReferentialPostUpdateTest(AssertMixin): class SelfReferentialPostUpdateTest2(AssertMixin): def setUpAll(self): global metadata, a_table - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) a_table = Table("a", metadata, Column("id", Integer(), primary_key=True), Column("fui", String()), diff --git a/test/orm/entity.py b/test/orm/entity.py index a5346597b4..813ed327cf 100644 --- a/test/orm/entity.py +++ b/test/orm/entity.py @@ -14,7 +14,7 @@ class EntityTest(AssertMixin): to have multiple primary mappers """ def setUpAll(self): global user1, user2, address1, address2, metadata, ctx - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) ctx = SessionContext(create_session) user1 = Table('user1', metadata, diff --git a/test/orm/generative.py b/test/orm/generative.py index a83b81758a..fb17ffaf44 100644 --- a/test/orm/generative.py +++ b/test/orm/generative.py @@ -14,7 +14,7 @@ class GenerativeQueryTest(PersistTest): def setUpAll(self): self.install_threadlocal() global foo, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) foo = Table('foo', metadata, Column('id', Integer, Sequence('foo_id_seq'), primary_key=True), Column('bar', Integer), @@ -115,7 +115,7 @@ class GenerativeTest2(PersistTest): def setUpAll(self): self.install_threadlocal() global metadata, table1, table2 - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) table1 = Table('Table1', metadata, Column('id', Integer, primary_key=True), ) @@ -209,7 +209,7 @@ class CaseSensitiveTest(PersistTest): def setUpAll(self): self.install_threadlocal() global metadata, table1, table2 - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) table1 = Table('Table1', metadata, Column('ID', Integer, primary_key=True), ) diff --git a/test/orm/inheritance/polymorph2.py b/test/orm/inheritance/polymorph2.py index cdfd8a8eb5..141b3abc27 100644 --- a/test/orm/inheritance/polymorph2.py +++ b/test/orm/inheritance/polymorph2.py @@ -617,7 +617,7 @@ class GenerativeTest(testbase.AssertMixin): # +--------------------------------------- has a ------+ global metadata, status, people, engineers, managers, cars - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) # table definitions status = Table('status', metadata, Column('status_id', Integer, primary_key=True), diff --git a/test/orm/inheritance/single.py b/test/orm/inheritance/single.py index 1839f3b036..1432887e00 100644 --- a/test/orm/inheritance/single.py +++ b/test/orm/inheritance/single.py @@ -6,7 +6,7 @@ import testbase class SingleInheritanceTest(testbase.AssertMixin): def setUpAll(self): - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) global employees_table employees_table = Table('employees', metadata, Column('employee_id', Integer, primary_key=True), diff --git a/test/orm/lazytest1.py b/test/orm/lazytest1.py index d6c094ddd3..83694d3961 100644 --- a/test/orm/lazytest1.py +++ b/test/orm/lazytest1.py @@ -9,7 +9,7 @@ import datetime class LazyTest(AssertMixin): def setUpAll(self): global info_table, data_table, rel_table, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) info_table = Table('infos', metadata, Column('pk', Integer, primary_key=True), Column('info', String)) diff --git a/test/orm/memusage.py b/test/orm/memusage.py index 04cc6d220b..5834974ec5 100644 --- a/test/orm/memusage.py +++ b/test/orm/memusage.py @@ -35,7 +35,7 @@ class MapperCleanoutTest(testbase.AssertMixin): assert True def do_test(self): - metadata = BoundMetaData(engine) + metadata = MetaData(engine) table1 = Table("mytable", metadata, Column('col1', Integer, primary_key=True), diff --git a/test/orm/onetoone.py b/test/orm/onetoone.py index 0f8ddd4188..ada4c98cdf 100644 --- a/test/orm/onetoone.py +++ b/test/orm/onetoone.py @@ -27,7 +27,7 @@ class Port(object): class O2OTest(testbase.AssertMixin): def setUpAll(self): global jack, port, metadata, ctx - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) ctx = SessionContext(create_session) jack = Table('jack', metadata, Column('id', Integer, primary_key=True), diff --git a/test/orm/relationships.py b/test/orm/relationships.py index 4bb62f3e29..d95b7b4adf 100644 --- a/test/orm/relationships.py +++ b/test/orm/relationships.py @@ -107,7 +107,7 @@ class RelationTest2(testbase.PersistTest): is 'joined to itself'.""" def setUpAll(self): global metadata, company_tbl, employee_tbl - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) company_tbl = Table('company', metadata, Column('company_id', Integer, primary_key=True), @@ -222,7 +222,7 @@ class RelationTest3(testbase.PersistTest): def setUpAll(self): global jobs, pageversions, pages, metadata, Job, Page, PageVersion, PageComment import datetime - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) jobs = Table("jobs", metadata, Column("jobno", Unicode(15), primary_key=True), Column("created", DateTime, nullable=False, default=datetime.datetime.now), diff --git a/test/orm/unitofwork.py b/test/orm/unitofwork.py index c98938d133..d9c3cf4c30 100644 --- a/test/orm/unitofwork.py +++ b/test/orm/unitofwork.py @@ -63,7 +63,7 @@ class VersioningTest(UnitOfWorkTest): UnitOfWorkTest.setUpAll(self) ctx.current.clear() global version_table - version_table = Table('version_test', BoundMetaData(db), + version_table = Table('version_test', MetaData(db), Column('id', Integer, Sequence('version_test_seq'), primary_key=True ), Column('version_id', Integer, nullable=False), Column('value', String(40), nullable=False) @@ -166,7 +166,7 @@ class UnicodeTest(UnitOfWorkTest): def setUpAll(self): UnitOfWorkTest.setUpAll(self) global metadata, uni_table, uni_table2 - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) uni_table = Table('uni_test', metadata, Column('id', Integer, Sequence("uni_test_id_seq", optional=True), primary_key=True), Column('txt', Unicode(50), unique=True)) @@ -217,7 +217,7 @@ class MutableTypesTest(UnitOfWorkTest): def setUpAll(self): UnitOfWorkTest.setUpAll(self) global metadata, table - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) table = Table('mutabletest', metadata, Column('id', Integer, Sequence('mutableidseq', optional=True), primary_key=True), Column('data', PickleType), @@ -329,7 +329,7 @@ class PKTest(UnitOfWorkTest): def setUpAll(self): UnitOfWorkTest.setUpAll(self) global table, table2, table3 - metadata = BoundMetaData(db) + metadata = MetaData(db) table = Table( 'multipk', metadata, Column('multi_id', Integer, Sequence("multi_id_seq", optional=True), primary_key=True), @@ -418,7 +418,7 @@ class ForeignPKTest(UnitOfWorkTest): def setUpAll(self): UnitOfWorkTest.setUpAll(self) global metadata, people, peoplesites - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) people = Table("people", metadata, Column('person', String(10), primary_key=True), Column('firstname', String(10)), @@ -459,7 +459,7 @@ class PassiveDeletesTest(UnitOfWorkTest): def setUpAll(self): UnitOfWorkTest.setUpAll(self) global metadata, mytable,myothertable - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) mytable = Table('mytable', metadata, Column('id', Integer, primary_key=True), Column('data', String(30)), @@ -527,7 +527,7 @@ class DefaultTest(UnitOfWorkTest): self.hohoval = 9 self.althohoval = 15 global default_table - metadata = BoundMetaData(db) + metadata = MetaData(db) default_table = Table('default_test', metadata, Column('id', Integer, Sequence("dt_seq", optional=True), primary_key=True), Column('hoho', hohotype, PassiveDefault(str(self.hohoval))), @@ -1423,7 +1423,7 @@ class SaveTest2(UnitOfWorkTest): ctx.current.clear() clear_mappers() global meta, users, addresses - meta = BoundMetaData(db) + meta = MetaData(db) users = Table('users', meta, Column('user_id', Integer, Sequence('user_id_seq', optional=True), primary_key = True), Column('user_name', String(20)), diff --git a/test/perf/cascade_speed.py b/test/perf/cascade_speed.py index fb3fb79709..dd095ab9aa 100644 --- a/test/perf/cascade_speed.py +++ b/test/perf/cascade_speed.py @@ -1,9 +1,11 @@ +import testbase from sqlalchemy import * +from sqlalchemy.orm import * from testbase import Table, Column from timeit import Timer import sys -meta = DynamicMetaData("time_trial") +meta = MetaData() orders = Table('orders', meta, Column('id', Integer, Sequence('order_id_seq'), primary_key = True), diff --git a/test/perf/masseagerload.py b/test/perf/masseagerload.py index 2d87b391e6..c2c0933a59 100644 --- a/test/perf/masseagerload.py +++ b/test/perf/masseagerload.py @@ -18,7 +18,7 @@ DIVISOR = 50 class LoadTest(AssertMixin): def setUpAll(self): global items, meta,subitems - meta = BoundMetaData(db) + meta = MetaData(db) items = Table('items', meta, Column('item_id', Integer, primary_key=True), Column('value', String(100))) diff --git a/test/perf/massload.py b/test/perf/massload.py index 560696f511..02b847599d 100644 --- a/test/perf/massload.py +++ b/test/perf/massload.py @@ -21,7 +21,7 @@ for best results, dont run with sqlite :memory: database, and keep an eye on top class LoadTest(AssertMixin): def setUpAll(self): global items, meta - meta = BoundMetaData(db) + meta = MetaData(db) items = Table('items', meta, Column('item_id', Integer, primary_key=True), Column('value', String(100))) diff --git a/test/perf/masssave.py b/test/perf/masssave.py index 98917462e8..53f13119ed 100644 --- a/test/perf/masssave.py +++ b/test/perf/masssave.py @@ -15,7 +15,7 @@ NUM = 250000 class SaveTest(AssertMixin): def setUpAll(self): global items, metadata - metadata = BoundMetaData(db) + metadata = MetaData(db) items = Table('items', metadata, Column('item_id', Integer, primary_key=True), Column('value', String(100))) diff --git a/test/perf/poolload.py b/test/perf/poolload.py index 29dcf87e92..b2a84033e3 100644 --- a/test/perf/poolload.py +++ b/test/perf/poolload.py @@ -11,7 +11,7 @@ psycopg = pool.manage(psycopg,pool_size=2,max_overflow=1, timeout=5, echo=True) print psycopg db = create_engine('postgres://scott:tiger@127.0.0.1/test',pool=psycopg,strategy='threadlocal') print db.connection_provider._pool -metadata = BoundMetaData(db) +metadata = MetaData(db) users_table = Table('users', metadata, Column('user_id', Integer, primary_key=True), diff --git a/test/perf/threaded_compile.py b/test/perf/threaded_compile.py index cb0d72e4f9..38fe145cd1 100644 --- a/test/perf/threaded_compile.py +++ b/test/perf/threaded_compile.py @@ -8,7 +8,7 @@ import thread, time from sqlalchemy.orm import mapperlib from testbase import Table, Column -meta = BoundMetaData('sqlite:///foo.db') +meta = MetaData('sqlite:///foo.db') t1 = Table('t1', meta, Column('c1', Integer, primary_key=True), diff --git a/test/perf/wsgi.py b/test/perf/wsgi.py index b77742d78f..e40171f07f 100644 --- a/test/perf/wsgi.py +++ b/test/perf/wsgi.py @@ -11,10 +11,10 @@ logging.basicConfig() logging.getLogger('sqlalchemy.pool').setLevel(logging.INFO) threadids = set() -#meta = BoundMetaData('postgres://scott:tiger@127.0.0.1/test') +#meta = MetaData('postgres://scott:tiger@127.0.0.1/test') -#meta = BoundMetaData('mysql://scott:tiger@localhost/test', poolclass=pool.SingletonThreadPool) -meta = BoundMetaData('mysql://scott:tiger@localhost/test') +#meta = MetaData('mysql://scott:tiger@localhost/test', poolclass=pool.SingletonThreadPool) +meta = MetaData('mysql://scott:tiger@localhost/test') foo = Table('foo', meta, Column('id', Integer, primary_key=True), Column('data', String(30))) diff --git a/test/sql/case_statement.py b/test/sql/case_statement.py index 802de6231e..5a42317d7f 100644 --- a/test/sql/case_statement.py +++ b/test/sql/case_statement.py @@ -7,7 +7,7 @@ from testbase import Table, Column class CaseTest(testbase.PersistTest): def setUpAll(self): - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) global info_table info_table = Table('infos', metadata, Column('pk', Integer, primary_key=True), diff --git a/test/sql/constraints.py b/test/sql/constraints.py index d84901a48c..b5f1a17414 100644 --- a/test/sql/constraints.py +++ b/test/sql/constraints.py @@ -7,7 +7,7 @@ class ConstraintTest(testbase.AssertMixin): def setUp(self): global metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) def tearDown(self): metadata.drop_all() diff --git a/test/sql/defaults.py b/test/sql/defaults.py index 94adaa11d4..2eeaef7cc1 100644 --- a/test/sql/defaults.py +++ b/test/sql/defaults.py @@ -14,7 +14,7 @@ class DefaultTest(PersistTest): def setUpAll(self): global t, f, f2, ts, currenttime, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) x = {'x':50} def mydefault(): x['x'] += 1 @@ -136,7 +136,7 @@ class DefaultTest(PersistTest): key values in memory before insert; otherwise we cant locate the just inserted row.""" try: - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) testbase.db.execute(""" CREATE TABLE speedy_users ( @@ -157,7 +157,7 @@ class DefaultTest(PersistTest): class AutoIncrementTest(PersistTest): @testbase.supported('postgres', 'mysql') def testnonautoincrement(self): - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) nonai_table = Table("aitest", meta, Column('id', Integer, autoincrement=False, primary_key=True), Column('data', String(20))) @@ -177,7 +177,7 @@ class AutoIncrementTest(PersistTest): nonai_table.drop() def testwithautoincrement(self): - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) table = Table("aitest", meta, Column('id', Integer, primary_key=True), Column('data', String(20))) @@ -192,7 +192,7 @@ class AutoIncrementTest(PersistTest): # TODO: what does this test do that all the various ORM tests dont ? - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) table = Table("aitest", meta, Column('id', Integer, primary_key=True), Column('data', String(20))) @@ -200,7 +200,7 @@ class AutoIncrementTest(PersistTest): try: # simulate working on a table that doesn't already exist - meta2 = BoundMetaData(testbase.db) + meta2 = MetaData(testbase.db) table2 = Table("aitest", meta2, Column('id', Integer, primary_key=True), Column('data', String(20))) @@ -222,7 +222,7 @@ class SequenceTest(PersistTest): @testbase.supported('postgres', 'oracle') def setUpAll(self): global cartitems, sometable, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) cartitems = Table("cartitems", metadata, Column("cart_id", Integer, Sequence('cart_id_seq'), primary_key=True), Column("description", String(40)), diff --git a/test/sql/query.py b/test/sql/query.py index 8eb6ef4256..76e07881b0 100644 --- a/test/sql/query.py +++ b/test/sql/query.py @@ -15,7 +15,7 @@ class QueryTest(PersistTest): def setUpAll(self): global users, addresses, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) users = Table('query_users', metadata, Column('user_id', INT, primary_key = True), Column('user_name', VARCHAR(20)), @@ -286,7 +286,7 @@ class QueryTest(PersistTest): def test_update_functions(self): """test sending functions and SQL expressions to the VALUES and SET clauses of INSERT/UPDATE instances, and that column-level defaults get overridden""" - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) t = Table('t1', meta, Column('id', Integer, Sequence('t1idseq', optional=True), primary_key=True), Column('value', Integer) @@ -368,7 +368,7 @@ class QueryTest(PersistTest): @testbase.unsupported('oracle', 'firebird') def test_column_accessor_shadow(self): - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) shadowed = Table('test_shadowed', meta, Column('shadow_id', INT, primary_key = True), Column('shadow_name', VARCHAR(20)), @@ -398,7 +398,7 @@ class QueryTest(PersistTest): @testbase.supported('mssql') def test_fetchid_trigger(self): - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) t1 = Table('t1', meta, Column('id', Integer, Sequence('fred', 100, 1), primary_key=True), Column('descr', String(200))) @@ -424,7 +424,7 @@ class QueryTest(PersistTest): @testbase.supported('mssql') def test_insertid_schema(self): - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) con = testbase.db.connect() con.execute('create schema paj') tbl = Table('test', meta, Column('id', Integer, primary_key=True), schema='paj') @@ -491,7 +491,7 @@ class CompoundTest(PersistTest): different databases.""" def setUpAll(self): global metadata, t1, t2, t3 - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) t1 = Table('t1', metadata, Column('col1', Integer, Sequence('t1pkseq'), primary_key=True), Column('col2', String(30)), @@ -605,7 +605,7 @@ class CompoundTest(PersistTest): class OperatorTest(PersistTest): def setUpAll(self): global metadata, flds - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) flds = Table('flds', metadata, Column('idcol', Integer, Sequence('t1pkseq'), primary_key=True), Column('intcol', Integer), diff --git a/test/sql/quote.py b/test/sql/quote.py index 1281b3d1ab..08cef8e5f9 100644 --- a/test/sql/quote.py +++ b/test/sql/quote.py @@ -10,7 +10,7 @@ class QuoteTest(PersistTest): # such as: spaces, quote characters, punctuation characters, set up tests for those as # well. global table1, table2, table3 - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) table1 = Table('WorstCase1', metadata, Column('lowercase', Integer, primary_key=True), Column('UPPERCASE', Integer), @@ -48,7 +48,7 @@ class QuoteTest(PersistTest): assert(res2==[(1,2,3),(2,2,3),(4,3,2)]) def testreflect(self): - meta2 = BoundMetaData(testbase.db) + meta2 = MetaData(testbase.db) t2 = Table('WorstCase2', meta2, autoload=True, quote=True) assert t2.c.has_key('MixedCase') @@ -121,7 +121,7 @@ class QuoteTest(PersistTest): Column('MixedCase', Integer)) # first test case sensitive tables migrating via tometadata - meta = BoundMetaData(testbase.db, case_sensitive=False) + meta = MetaData(testbase.db, case_sensitive=False) lc_table1 = table1.tometadata(meta) lc_table2 = table2.tometadata(meta) assert lc_table1.case_sensitive is False diff --git a/test/sql/rowcount.py b/test/sql/rowcount.py index 673a51bb0e..a74f3e0f84 100644 --- a/test/sql/rowcount.py +++ b/test/sql/rowcount.py @@ -6,7 +6,7 @@ import testbase class FoundRowsTest(testbase.AssertMixin): """tests rowcount functionality""" def setUpAll(self): - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) global employees_table diff --git a/test/sql/selectable.py b/test/sql/selectable.py index dc992399e9..bc85e74557 100755 --- a/test/sql/selectable.py +++ b/test/sql/selectable.py @@ -9,7 +9,7 @@ from testbase import Table, Column db = testbase.db -metadata = BoundMetaData(db) +metadata = MetaData(db) table = Table('table1', metadata, Column('col1', Integer, primary_key=True), Column('col2', String(20)), diff --git a/test/sql/testtypes.py b/test/sql/testtypes.py index cd10bed812..8d5848d1cd 100644 --- a/test/sql/testtypes.py +++ b/test/sql/testtypes.py @@ -107,7 +107,7 @@ class OverrideTest(PersistTest): def setUpAll(self): global users - users = Table('type_users', BoundMetaData(db), + users = Table('type_users', MetaData(db), Column('user_id', Integer, primary_key = True), # totall custom type Column('goofy', MyType, nullable = False), @@ -142,7 +142,7 @@ class ColumnsTest(AssertMixin): expectedResults['float_column'] = 'float_column FLOAT(25)' print db.engine.__module__ - testTable = Table('testColumns', BoundMetaData(db), + testTable = Table('testColumns', MetaData(db), Column('int_column', Integer), Column('smallint_column', Smallinteger), Column('varchar_column', String(20)), @@ -157,7 +157,7 @@ class UnicodeTest(AssertMixin): """tests the Unicode type. also tests the TypeDecorator with instances in the types package.""" def setUpAll(self): global unicode_table - metadata = BoundMetaData(db) + metadata = MetaData(db) unicode_table = Table('unicode_table', metadata, Column('id', Integer, Sequence('uni_id_seq', optional=True), primary_key=True), Column('unicode_varchar', Unicode(250)), @@ -217,7 +217,7 @@ class UnicodeTest(AssertMixin): class BinaryTest(AssertMixin): def setUpAll(self): global binary_table - binary_table = Table('binary_table', BoundMetaData(db), + binary_table = Table('binary_table', MetaData(db), Column('primary_id', Integer, Sequence('binary_id_seq', optional=True), primary_key=True), Column('data', Binary), Column('data_slice', Binary(100)), @@ -307,7 +307,7 @@ class DateTest(AssertMixin): collist = [Column('user_id', INT, primary_key = True), Column('user_name', VARCHAR(20)), Column('user_datetime', DateTime(timezone=False)), Column('user_date', Date), Column('user_time', Time)] - users_with_date = Table('query_users_with_date', BoundMetaData(db), *collist) + users_with_date = Table('query_users_with_date', MetaData(db), *collist) users_with_date.create() insert_dicts = [dict(zip(fnames, d)) for d in insert_data] @@ -353,7 +353,7 @@ class DateTest(AssertMixin): class IntervalTest(AssertMixin): def setUpAll(self): global interval_table, metadata - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) interval_table = Table("intervaltable", metadata, Column("id", Integer, primary_key=True), Column("interval", Interval), @@ -371,7 +371,7 @@ class IntervalTest(AssertMixin): class BooleanTest(AssertMixin): def setUpAll(self): global bool_table - metadata = BoundMetaData(testbase.db) + metadata = MetaData(testbase.db) bool_table = Table('booltest', metadata, Column('id', Integer, primary_key=True), Column('value', Boolean)) diff --git a/test/sql/unicode.py b/test/sql/unicode.py index fb77a77b74..c426a258c7 100644 --- a/test/sql/unicode.py +++ b/test/sql/unicode.py @@ -41,7 +41,7 @@ class UnicodeSchemaTest(testbase.PersistTest): t1.insert().execute({u'méil':2, u'éXXm':7}) t2.insert().execute({'a':2, 'b':2}) - meta = BoundMetaData(testbase.db) + meta = MetaData(testbase.db) tt1 = Table(t1.name, meta, autoload=True) tt2 = Table(t2.name, meta, autoload=True) tt1.insert().execute({u'méil':1, u'éXXm':5}) diff --git a/test/tables.py b/test/tables.py index 33ba858c21..6ae53a1dae 100644 --- a/test/tables.py +++ b/test/tables.py @@ -6,7 +6,7 @@ from testbase import Table, Column ECHO = testbase.echo db = testbase.db -metadata = BoundMetaData(db) +metadata = MetaData(db) users = Table('users', metadata, Column('user_id', Integer, Sequence('user_id_seq', optional=True), primary_key = True), diff --git a/test/testbase.py b/test/testbase.py index e8fcadc4d2..10b6671d21 100644 --- a/test/testbase.py +++ b/test/testbase.py @@ -7,7 +7,7 @@ import sys import os, unittest, StringIO, re, ConfigParser, optparse sys.path.insert(0, os.path.join(os.getcwd(), 'lib')) import sqlalchemy -from sqlalchemy import sql, schema, engine, pool, BoundMetaData +from sqlalchemy import sql, schema, engine, pool, MetaData from sqlalchemy.orm import clear_mappers db = None @@ -167,7 +167,7 @@ firebird=firebird://sysdba:s@localhost/tmp/test.fdb if options.log_debug is not None: for elem in options.log_debug: logging.getLogger(elem).setLevel(logging.DEBUG) - metadata = sqlalchemy.BoundMetaData(db) + metadata = sqlalchemy.MetaData(db) def unsupported(*dbs): """a decorator that marks a test as unsupported by one or more database implementations""" @@ -309,7 +309,7 @@ class ORMTest(AssertMixin): keep_data = False def setUpAll(self): global _otest_metadata - _otest_metadata = BoundMetaData(db) + _otest_metadata = MetaData(db) self.define_tables(_otest_metadata) _otest_metadata.create_all() def define_tables(self, _otest_metadata): -- 2.47.3