try:
schema = kwargs.get('schema', None)
autoload = kwargs.pop('autoload', False)
+ redefine = kwargs.pop('redefine', False)
+ mustexist = kwargs.pop('mustexist', False)
key = _get_table_key(engine, name, schema)
table = engine.tables[key]
if len(args):
- if kwargs.pop('redefine', False):
+ if redefine:
table.reload_values(*args)
else:
raise "Table '%s.%s' is already defined. specify 'redefine=True' to remap columns" % (schema, name)
return table
except KeyError:
- if kwargs.pop('mustexist', False):
+ if mustexist:
raise "Table '%s.%s' not defined" % (schema, name)
table = type.__call__(self, name, engine, *args, **kwargs)
engine.tables[key] = table
for c in self.columns:
c.accept_visitor(visitor)
return visitor.visit_table(self)
-
+
+ def deregister(self):
+ """removes this table from it's engines table registry. this does not
+ issue a SQL DROP statement."""
+ key = _get_table_key(self.engine, self.name, self.schema)
+ del self.engine.tables[key]
+
def toengine(self, engine, schema=None):
"""returns a singleton instance of this Table with a different engine"""
try:
engine = property(lambda s: s.table.engine)
def _set_primary_key(self):
+ if self.primary_key:
+ return
self.primary_key = True
self.nullable = False
self.table.primary_keys.append(self)
def suite():
modules_to_test = ('attributes', 'historyarray', 'pool', 'engines', 'query', 'types', 'mapper', 'objectstore', 'dependency', 'sequence', 'select')
+# modules_to_test = ('engines', 'mapper')
alltests = unittest.TestSuite()
for module in map(__import__, modules_to_test):
alltests.addTest(unittest.findTestCases(module, suiteClass=None))
class EngineTest(PersistTest):
def testbasic(self):
# really trip it up with a circular reference
- users = Table('users', testbase.db,
+ users = Table('engine_users', testbase.db,
Column('user_id', INT, primary_key = True),
Column('user_name', VARCHAR(20), nullable = False),
Column('test1', CHAR(5), nullable = False),
Column('test3', TEXT),
Column('test4', DECIMAL, nullable = False),
Column('test5', TIMESTAMP),
- Column('parent_user_id', INT, ForeignKey('users.user_id')),
+ Column('parent_user_id', INT, ForeignKey('engine_users.user_id')),
Column('test6', DATETIME, nullable = False),
Column('test7', CLOB),
Column('test8', BLOB),
)
- addresses = Table('email_addresses', testbase.db,
+ addresses = Table('engine_email_addresses', testbase.db,
Column('address_id', Integer, primary_key = True),
Column('remote_user_id', Integer, ForeignKey(users.c.user_id)),
Column('email_address', String(20)),
addresses.create()
# clear out table registry
- testbase.db.tables.clear()
-
+ users.deregister()
+ addresses.deregister()
+
try:
- users = Table('users', testbase.db, autoload = True)
- addresses = Table('email_addresses', testbase.db, autoload = True)
+ users = Table('engine_users', testbase.db, autoload = True)
+ addresses = Table('engine_email_addresses', testbase.db, autoload = True)
finally:
addresses.drop()
users.drop()
def testmultipk(self):
table = Table(
- 'multi', testbase.db,
+ 'engine_multi', testbase.db,
Column('multi_id', Integer, primary_key=True),
Column('multi_rev', Integer, primary_key=True),
Column('name', String(50), nullable=False),
)
table.create()
# clear out table registry
- testbase.db.tables.clear()
+ table.deregister()
try:
- table = Table('multi', testbase.db, autoload=True)
+ table = Table('engine_multi', testbase.db, autoload=True)
finally:
table.drop()