[Sqlalchemy-commits] [1369] sqlalchemy/branches/schema/test: de-threadlocalified the 'mapper' test s
Brought to you by:
zzzeek
From: <co...@sq...> - 2006-05-01 21:53:44
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><style type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; } #msg dt:after { content:':';} #msg dl, #msg dt, #msg ul, #msg li { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: bold} #msg dl a:link { color:#fc3; } #msg dl a:active { color:#ff0; } #msg dl a:visited { color:#cc6; } h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; } #msg ul, pre { overflow: auto; } #patch { width: 100%; } #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;} #patch .propset h4, #patch .binary h4 {margin:0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;} #patch .propset .diff, #patch .binary .diff {padding:10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, .info {color:#888;background:#fff;} --></style> <title>[1369] sqlalchemy/branches/schema/test: de-threadlocalified the 'mapper' test suite, other work with test suites, some fixes to session/sqlite</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>1369</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2006-05-01 16:53:27 -0500 (Mon, 01 May 2006)</dd> </dl> <h3>Log Message</h3> <pre>de-threadlocalified the 'mapper' test suite, other work with test suites, some fixes to session/sqlite</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemybranchesschemalibsqlalchemydatabasessqlitepy">sqlalchemy/branches/schema/lib/sqlalchemy/databases/sqlite.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemymodsthreadlocalpy">sqlalchemy/branches/schema/lib/sqlalchemy/mods/threadlocal.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemyormsessionpy">sqlalchemy/branches/schema/lib/sqlalchemy/orm/session.py</a></li> <li><a href="#sqlalchemybranchesschemalibsqlalchemyschemapy">sqlalchemy/branches/schema/lib/sqlalchemy/schema.py</a></li> <li><a href="#sqlalchemybranchesschematestdependencypy">sqlalchemy/branches/schema/test/dependency.py</a></li> <li><a href="#sqlalchemybranchesschematesteagertest1py">sqlalchemy/branches/schema/test/eagertest1.py</a></li> <li><a href="#sqlalchemybranchesschematestindexespy">sqlalchemy/branches/schema/test/indexes.py</a></li> <li><a href="#sqlalchemybranchesschematestmapperpy">sqlalchemy/branches/schema/test/mapper.py</a></li> <li><a href="#sqlalchemybranchesschematestobjectstorepy">sqlalchemy/branches/schema/test/objectstore.py</a></li> <li><a href="#sqlalchemybranchesschematestrelationshipspy">sqlalchemy/branches/schema/test/relationships.py</a></li> <li><a href="#sqlalchemybranchesschematesttablespy">sqlalchemy/branches/schema/test/tables.py</a></li> <li><a href="#sqlalchemybranchesschematesttestbasepy">sqlalchemy/branches/schema/test/testbase.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemybranchesschemalibsqlalchemydatabasessqlitepy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/databases/sqlite.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/databases/sqlite.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/lib/sqlalchemy/databases/sqlite.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -156,7 +156,8 @@ </span><span class="cx"> </span><span class="cx"> def has_table(self, connection, table_name): </span><span class="cx"> cursor = connection.execute("PRAGMA table_info(" + table_name + ")", {}) </span><del>- return bool(cursor.rowcount>0) </del><ins>+ row = cursor.fetchone() + return (row is not None) </ins><span class="cx"> </span><span class="cx"> def reflecttable(self, connection, table): </span><span class="cx"> c = connection.execute("PRAGMA table_info(" + table.name + ")", {}) </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemymodsthreadlocalpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/mods/threadlocal.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/mods/threadlocal.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/lib/sqlalchemy/mods/threadlocal.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -111,11 +111,16 @@ </span><span class="cx"> class_.expire = expire </span><span class="cx"> class_.refresh = refresh </span><span class="cx"> class_.expunge = expunge </span><ins>+ </ins><span class="cx"> def install_plugin(): </span><span class="cx"> reg = util.ScopedRegistry(session.Session) </span><span class="cx"> session.register_default_session(lambda *args, **kwargs: reg()) </span><span class="cx"> engine.default_strategy = 'threadlocal' </span><span class="cx"> sqlalchemy.objectstore = Objectstore() </span><span class="cx"> sqlalchemy.assign_mapper = assign_mapper </span><ins>+ +def uninstall_plugin(): + session.register_default_session(lambda *args, **kwargs:None) + engine.default_strategy = 'plain' </ins><span class="cx"> </span><span class="cx"> install_plugin() </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemyormsessionpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/orm/session.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/orm/session.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/lib/sqlalchemy/orm/session.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -25,13 +25,20 @@ </span><span class="cx"> def _begin(self): </span><span class="cx"> return SessionTransaction(self.session, self) </span><span class="cx"> def add(self, connection_or_engine): </span><del>- if self.connections.has_key(connection_or_engine): - return self.connections[connection_or_engine][0] - c = connection_or_engine.contextual_connect() - e = c.engine - if not self.connections.has_key(e): - self.connections[e] = (c, c.begin()) - return self.connections[e][0] </del><ins>+ # we reference the 'engine' attribute on the given object, which in the case of + # Connection, ProxyEngine, Engine, ComposedSQLEngine, whatever, should return the original + # "Engine" object that is handling the connection. + if self.connections.has_key(connection_or_engine.engine): + return self.connections[connection_or_engine.engine][0] + if isinstance(connection_or_engine, sqlalchemy.engine.base.Connection): + e = connection_or_engine.engine + c = connection_or_engine + else: + e = connection_or_engine + c = connection_or_engine.contextual_connect() + if not self.connections.has_key(e.engine): + self.connections[e.engine] = (c, c.begin()) + return self.connections[e.engine][0] </ins><span class="cx"> def commit(self): </span><span class="cx"> if self.parent is not None: </span><span class="cx"> return </span></span></pre></div> <a id="sqlalchemybranchesschemalibsqlalchemyschemapy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/lib/sqlalchemy/schema.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/lib/sqlalchemy/schema.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/lib/sqlalchemy/schema.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -594,7 +594,11 @@ </span><span class="cx"> self.name = name </span><span class="cx"> def is_bound(self): </span><span class="cx"> return False </span><del>- </del><ins>+ def clear(self): + self.tables.clear() + def table_iterator(self, reverse=True): + return self._sort_tables(self.tables.values(), reverse=reverse) + </ins><span class="cx"> def create_all(self, tables=None, engine=None): </span><span class="cx"> if not tables: </span><span class="cx"> tables = self.tables.values() </span></span></pre></div> <a id="sqlalchemybranchesschematestdependencypy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/test/dependency.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/test/dependency.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/test/dependency.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -1,5 +1,5 @@ </span><span class="cx"> from testbase import PersistTest </span><del>-import sqlalchemy.mapping.topological as topological </del><ins>+import sqlalchemy.orm.topological as topological </ins><span class="cx"> import unittest, sys, os </span><span class="cx"> </span><span class="cx"> </span></span></pre></div> <a id="sqlalchemybranchesschematesteagertest1py"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/test/eagertest1.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/test/eagertest1.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/test/eagertest1.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -7,7 +7,6 @@ </span><span class="cx"> class EagerTest(AssertMixin): </span><span class="cx"> def setUpAll(self): </span><span class="cx"> global designType, design, part, inheritedPart </span><del>- </del><span class="cx"> designType = Table('design_types', testbase.metadata, </span><span class="cx"> Column('design_type_id', Integer, primary_key=True), </span><span class="cx"> ) </span><span class="lines">@@ -27,45 +26,41 @@ </span><span class="cx"> Column('design_id', Integer, ForeignKey('design.design_id')), </span><span class="cx"> ) </span><span class="cx"> </span><del>- designType.create() - design.create() - part.create() - inheritedPart.create() </del><ins>+ testbase.metadata.create_all() </ins><span class="cx"> def tearDownAll(self): </span><del>- inheritedPart.drop() - part.drop() - design.drop() - designType.drop() - </del><ins>+ testbase.metadata.drop_all() + testbase.metadata.clear() </ins><span class="cx"> def testone(self): </span><span class="cx"> class Part(object):pass </span><span class="cx"> class Design(object):pass </span><span class="cx"> class DesignType(object):pass </span><span class="cx"> class InheritedPart(object):pass </span><span class="cx"> </span><del>- assign_mapper(Part, part) </del><ins>+ mapper(Part, part) </ins><span class="cx"> </span><del>- assign_mapper(InheritedPart, inheritedPart, properties=dict( </del><ins>+ mapper(InheritedPart, inheritedPart, properties=dict( </ins><span class="cx"> part=relation(Part, lazy=False) </span><span class="cx"> )) </span><span class="cx"> </span><del>- assign_mapper(Design, design, properties=dict( </del><ins>+ mapper(Design, design, properties=dict( </ins><span class="cx"> parts=relation(Part, private=True, backref="design"), </span><span class="cx"> inheritedParts=relation(InheritedPart, private=True, backref="design"), </span><span class="cx"> )) </span><span class="cx"> </span><del>- assign_mapper(DesignType, designType, properties=dict( </del><ins>+ mapper(DesignType, designType, properties=dict( </ins><span class="cx"> # designs=relation(Design, private=True, backref="type"), </span><span class="cx"> )) </span><span class="cx"> </span><del>- Design.mapper.add_property("type", relation(DesignType, lazy=False, backref="designs")) - Part.mapper.add_property("design", relation(Design, lazy=False, backref="parts")) </del><ins>+ class_mapper(Design).add_property("type", relation(DesignType, lazy=False, backref="designs")) + class_mapper(Part).add_property("design", relation(Design, lazy=False, backref="parts")) </ins><span class="cx"> #Part.mapper.add_property("designType", relation(DesignType)) </span><span class="cx"> </span><span class="cx"> d = Design() </span><del>- objectstore.flush() - objectstore.clear() - x = Design.get(1) </del><ins>+ sess = create_session() + sess.save(d) + sess.flush() + sess.clear() + x = sess.query(Design).get(1) </ins><span class="cx"> x.inheritedParts </span><span class="cx"> </span><span class="cx"> if __name__ == "__main__": </span></span></pre></div> <a id="sqlalchemybranchesschematestindexespy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/test/indexes.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/test/indexes.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/test/indexes.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -18,7 +18,7 @@ </span><span class="cx"> entity.drop() </span><span class="cx"> </span><span class="cx"> def test_index_create(self): </span><del>- employees = Table('employees', testbase.db, </del><ins>+ employees = Table('employees', testbase.metadata, </ins><span class="cx"> Column('id', Integer, primary_key=True), </span><span class="cx"> Column('first_name', String(30)), </span><span class="cx"> Column('last_name', String(30)), </span><span class="lines">@@ -40,7 +40,7 @@ </span><span class="cx"> </span><span class="cx"> def test_index_create_camelcase(self): </span><span class="cx"> """test that mixed-case index identifiers are legal""" </span><del>- employees = Table('companyEmployees', testbase.db, </del><ins>+ employees = Table('companyEmployees', testbase.metadata, </ins><span class="cx"> Column('id', Integer, primary_key=True), </span><span class="cx"> Column('firstName', String(30)), </span><span class="cx"> Column('lastName', String(30)), </span><span class="lines">@@ -76,7 +76,7 @@ </span><span class="cx"> stream.write = capt.append </span><span class="cx"> testbase.db.logger = testbase.db.engine.logger = stream </span><span class="cx"> </span><del>- events = Table('events', testbase.db, </del><ins>+ events = Table('events', testbase.metadata, </ins><span class="cx"> Column('id', Integer, primary_key=True), </span><span class="cx"> Column('name', String(30), unique=True), </span><span class="cx"> Column('location', String(30), index=True), </span></span></pre></div> <a id="sqlalchemybranchesschematestmapperpy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/test/mapper.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/test/mapper.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/test/mapper.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -68,7 +68,6 @@ </span><span class="cx"> tables.drop() </span><span class="cx"> db.echo = testbase.echo </span><span class="cx"> def tearDown(self): </span><del>- objectstore.clear() </del><span class="cx"> clear_mappers() </span><span class="cx"> def setUp(self): </span><span class="cx"> pass </span><span class="lines">@@ -127,13 +126,6 @@ </span><span class="cx"> s.refresh(u) </span><span class="cx"> self.assert_sql_count(db, go, 1) </span><span class="cx"> </span><del>- def testsessionpropigation(self): - sess = create_session() - mapper(User, users, properties={'addresses':relation(mapper(Address, addresses), lazy=True)}) - u = sess.get(User, 7) - assert get_session(u) is sess - assert get_session(u.addresses[0]) is sess - </del><span class="cx"> def testexpire(self): </span><span class="cx"> s = create_session() </span><span class="cx"> mapper(User, users, properties={'addresses':relation(mapper(Address, addresses), lazy=False)}) </span><span class="lines">@@ -187,20 +179,21 @@ </span><span class="cx"> s.refresh(u) #hangs </span><span class="cx"> </span><span class="cx"> def testmagic(self): </span><del>- m = mapper(User, users, properties = { </del><ins>+ mapper(User, users, properties = { </ins><span class="cx"> 'addresses' : relation(mapper(Address, addresses)) </span><span class="cx"> }) </span><del>- l = m.select_by(user_name='fred') </del><ins>+ sess = create_session() + l = sess.query(User).select_by(user_name='fred') </ins><span class="cx"> self.assert_result(l, User, *[{'user_id':9}]) </span><span class="cx"> u = l[0] </span><span class="cx"> </span><del>- u2 = m.get_by_user_name('fred') </del><ins>+ u2 = sess.query(User).get_by_user_name('fred') </ins><span class="cx"> self.assert_(u is u2) </span><span class="cx"> </span><del>- l = m.select_by(email_address='ed...@be...') </del><ins>+ l = sess.query(User).select_by(email_address='ed...@be...') </ins><span class="cx"> self.assert_result(l, User, *[{'user_id':8}]) </span><span class="cx"> </span><del>- l = m.select_by(User.c.user_name=='fred', addresses.c.email_address!='ed...@be...', user_id=9) </del><ins>+ l = sess.query(User).select_by(User.c.user_name=='fred', addresses.c.email_address!='ed...@be...', user_id=9) </ins><span class="cx"> </span><span class="cx"> def testprops(self): </span><span class="cx"> """tests the various attributes of the properties attached to classes""" </span><span class="lines">@@ -211,46 +204,48 @@ </span><span class="cx"> </span><span class="cx"> def testload(self): </span><span class="cx"> """tests loading rows with a mapper and producing object instances""" </span><del>- m = mapper(User, users) - l = m.select() </del><ins>+ mapper(User, users) + l = create_session().query(User).select() </ins><span class="cx"> self.assert_result(l, User, *user_result) </span><del>- l = m.select(users.c.user_name.endswith('ed')) </del><ins>+ l = create_session().query(User).select(users.c.user_name.endswith('ed')) </ins><span class="cx"> self.assert_result(l, User, *user_result[1:3]) </span><span class="cx"> </span><span class="cx"> def testorderby(self): </span><span class="cx"> # TODO: make a unit test out of these various combinations </span><span class="cx"> # m = mapper(User, users, order_by=desc(users.c.user_name)) </span><del>- m = mapper(User, users, order_by=None) -# m = mapper(User, users) </del><ins>+ mapper(User, users, order_by=None) +# mapper(User, users) </ins><span class="cx"> </span><del>-# l = m.select(order_by=[desc(users.c.user_name), asc(users.c.user_id)]) - l = m.select() -# l = m.select(order_by=[]) -# l = m.select(order_by=None) </del><ins>+# l = create_session().query(User).select(order_by=[desc(users.c.user_name), asc(users.c.user_id)]) + l = create_session().query(User).select() +# l = create_session().query(User).select(order_by=[]) +# l = create_session().query(User).select(order_by=None) </ins><span class="cx"> </span><span class="cx"> </span><span class="cx"> def testfunction(self): </span><span class="cx"> """tests mapping to a SELECT statement that has functions in it.""" </span><span class="cx"> s = select([users, (users.c.user_id * 2).label('concat'), func.count(addresses.c.address_id).label('count')], </span><span class="cx"> users.c.user_id==addresses.c.user_id, group_by=[c for c in users.c]).alias('myselect') </span><del>- m = mapper(User, s, primarytable=users) - print [c.key for c in m.c] - l = m.select() </del><ins>+ mapper(User, s) + sess = create_session() + l = sess.query(User).select() </ins><span class="cx"> for u in l: </span><span class="cx"> print "User", u.user_id, u.user_name, u.concat, u.count </span><del>- #l[1].user_name='asdf' - #objectstore.flush() - </del><ins>+ assert l[0].concat == l[0].user_id * 2 == 14 + assert l[1].concat == l[1].user_id * 2 == 16 + </ins><span class="cx"> def testcount(self): </span><del>- m = mapper(User, users) - self.assert_(m.count()==3) - self.assert_(m.count(users.c.user_id.in_(8,9))==2) - self.assert_(m.count_by(user_name='fred')==1) </del><ins>+ mapper(User, users) + q = create_session().query(User) + self.assert_(q.count()==3) + self.assert_(q.count(users.c.user_id.in_(8,9))==2) + self.assert_(q.count_by(user_name='fred')==1) </ins><span class="cx"> </span><span class="cx"> def testmultitable(self): </span><span class="cx"> usersaddresses = sql.join(users, addresses, users.c.user_id == addresses.c.user_id) </span><del>- m = mapper(User, usersaddresses, primarytable = users, primary_key=[users.c.user_id]) - l = m.select() </del><ins>+ m = mapper(User, usersaddresses, primary_key=[users.c.user_id]) + q = create_session().query(m) + l = q.select() </ins><span class="cx"> self.assert_result(l, User, *user_result[0:2]) </span><span class="cx"> </span><span class="cx"> def testoverride(self): </span><span class="lines">@@ -278,10 +273,11 @@ </span><span class="cx"> </span><span class="cx"> def testeageroptions(self): </span><span class="cx"> """tests that a lazy relation can be upgraded to an eager relation via the options method""" </span><del>- m = mapper(User, users, properties = dict( </del><ins>+ sess = create_session() + mapper(User, users, properties = dict( </ins><span class="cx"> addresses = relation(mapper(Address, addresses), lazy = True) </span><span class="cx"> )) </span><del>- l = m.options(eagerload('addresses')).select() </del><ins>+ l = sess.query(User).options(eagerload('addresses')).select() </ins><span class="cx"> </span><span class="cx"> def go(): </span><span class="cx"> self.assert_result(l, User, *user_address_result) </span><span class="lines">@@ -289,16 +285,17 @@ </span><span class="cx"> </span><span class="cx"> def testlazyoptions(self): </span><span class="cx"> """tests that an eager relation can be upgraded to a lazy relation via the options method""" </span><del>- m = mapper(User, users, properties = dict( </del><ins>+ sess = create_session() + mapper(User, users, properties = dict( </ins><span class="cx"> addresses = relation(mapper(Address, addresses), lazy = False) </span><span class="cx"> )) </span><del>- l = m.options(lazyload('addresses')).select() </del><ins>+ l = sess.query(User).options(lazyload('addresses')).select() </ins><span class="cx"> def go(): </span><span class="cx"> self.assert_result(l, User, *user_address_result) </span><span class="cx"> self.assert_sql_count(db, go, 3) </span><span class="cx"> </span><span class="cx"> def testdeepoptions(self): </span><del>- m = mapper(User, users, </del><ins>+ mapper(User, users, </ins><span class="cx"> properties = { </span><span class="cx"> 'orders': relation(mapper(Order, orders, properties = { </span><span class="cx"> 'items' : relation(mapper(Item, orderitems, properties = { </span><span class="lines">@@ -307,55 +304,43 @@ </span><span class="cx"> })) </span><span class="cx"> }) </span><span class="cx"> </span><del>- m2 = m.options(eagerload('orders.items.keywords')) - u = m.select() </del><ins>+ sess = create_session() + q2 = sess.query(User).options(eagerload('orders.items.keywords')) + u = sess.query(User).select() </ins><span class="cx"> def go(): </span><span class="cx"> print u[0].orders[1].items[0].keywords[1] </span><span class="cx"> self.assert_sql_count(db, go, 3) </span><del>- objectstore.clear() - u = m2.select() </del><ins>+ sess.clear() + u = q2.select() </ins><span class="cx"> self.assert_sql_count(db, go, 2) </span><span class="cx"> </span><del>-class PropertyTest(MapperSuperTest): - def testbasic(self): - """tests that you can create mappers inline with class definitions""" - class _Address(object): - pass - assign_mapper(_Address, addresses) - - class _User(object): - pass - assign_mapper(_User, users, properties = dict( - addresses = relation(_Address.mapper, lazy = False) - ), is_primary = True) - - l = _User.mapper.select(_User.c.user_name == 'fred') - self.echo(repr(l)) - </del><ins>+class InheritanceTest(MapperSuperTest): </ins><span class="cx"> </span><span class="cx"> def testinherits(self): </span><span class="cx"> class _Order(object): </span><span class="cx"> pass </span><del>- assign_mapper(_Order, orders) </del><ins>+ ordermapper = mapper(_Order, orders) </ins><span class="cx"> </span><span class="cx"> class _User(object): </span><span class="cx"> pass </span><del>- assign_mapper(_User, users, properties = dict( - orders = relation(_Order.mapper, lazy = False) </del><ins>+ usermapper = mapper(_User, users, properties = dict( + orders = relation(ordermapper, lazy = False) </ins><span class="cx"> )) </span><span class="cx"> </span><span class="cx"> class AddressUser(_User): </span><span class="cx"> pass </span><del>- assign_mapper(AddressUser, addresses, inherits = _User.mapper) - - l = AddressUser.mapper.select() </del><ins>+ assign_mapper(AddressUser, addresses, inherits = usermapper) </ins><span class="cx"> </span><ins>+ sess = create_session() + q = sess.query(AddressUser) + l = q.select() + </ins><span class="cx"> jack = l[0] </span><span class="cx"> self.assert_(jack.user_name=='jack') </span><span class="cx"> jack.email_address = 'ja...@gm...' </span><del>- objectstore.flush() - objectstore.clear() - au = AddressUser.mapper.get_by(user_name='jack') </del><ins>+ sess.flush() + sess.clear() + au = q.get_by(user_name='jack') </ins><span class="cx"> self.assert_(au.email_address == 'ja...@gm...') </span><span class="cx"> </span><span class="cx"> def testinherits2(self): </span><span class="lines">@@ -365,19 +350,20 @@ </span><span class="cx"> pass </span><span class="cx"> class AddressUser(_Address): </span><span class="cx"> pass </span><del>- assign_mapper(_Order, orders) - assign_mapper(_Address, addresses) - assign_mapper(AddressUser, users, inherits = _Address.mapper, </del><ins>+ ordermapper = mapper(_Order, orders) + addressmapper = mapper(_Address, addresses) + usermapper = mapper(AddressUser, users, inherits = addressmapper, </ins><span class="cx"> properties = { </span><del>- 'orders' : relation(_Order.mapper, lazy=False) </del><ins>+ 'orders' : relation(ordermapper, lazy=False) </ins><span class="cx"> }) </span><del>- l = AddressUser.mapper.select() </del><ins>+ sess = create_session() + l = sess.query(usermapper).select() </ins><span class="cx"> jack = l[0] </span><span class="cx"> self.assert_(jack.user_name=='jack') </span><span class="cx"> jack.email_address = 'ja...@gm...' </span><del>- objectstore.flush() - objectstore.clear() - au = AddressUser.mapper.get_by(user_name='jack') </del><ins>+ sess.flush() + sess.clear() + au = sess.query(usermapper).get_by(user_name='jack') </ins><span class="cx"> self.assert_(au.email_address == 'ja...@gm...') </span><span class="cx"> </span><span class="cx"> </span><span class="lines">@@ -393,8 +379,9 @@ </span><span class="cx"> o = Order() </span><span class="cx"> self.assert_(o.description is None) </span><span class="cx"> </span><ins>+ q = create_session().query(m) </ins><span class="cx"> def go(): </span><del>- l = m.select() </del><ins>+ l = q.select() </ins><span class="cx"> o2 = l[2] </span><span class="cx"> print o2.description </span><span class="cx"> </span><span class="lines">@@ -409,10 +396,12 @@ </span><span class="cx"> 'description':deferred(orders.c.description) </span><span class="cx"> }) </span><span class="cx"> </span><del>- l = m.select() </del><ins>+ sess = create_session() + q = sess.query(m) + l = q.select() </ins><span class="cx"> o2 = l[2] </span><span class="cx"> o2.isopen = 1 </span><del>- objectstore.flush() </del><ins>+ sess.flush() </ins><span class="cx"> </span><span class="cx"> def testgroup(self): </span><span class="cx"> """tests deferred load with a group""" </span><span class="lines">@@ -422,9 +411,9 @@ </span><span class="cx"> 'description':deferred(orders.c.description, group='primary'), </span><span class="cx"> 'opened':deferred(orders.c.isopen, group='primary') </span><span class="cx"> }) </span><del>- </del><ins>+ q = create_session().query(m) </ins><span class="cx"> def go(): </span><del>- l = m.select() </del><ins>+ l = q.select() </ins><span class="cx"> o2 = l[2] </span><span class="cx"> print o2.opened, o2.description, o2.userident </span><span class="cx"> </span><span class="lines">@@ -437,9 +426,11 @@ </span><span class="cx"> def testoptions(self): </span><span class="cx"> """tests using options on a mapper to create deferred and undeferred columns""" </span><span class="cx"> m = mapper(Order, orders) </span><del>- m2 = m.options(defer('user_id')) </del><ins>+ sess = create_session() + q = sess.query(m) + q2 = q.options(defer('user_id')) </ins><span class="cx"> def go(): </span><del>- l = m2.select() </del><ins>+ l = q2.select() </ins><span class="cx"> print l[2].user_id </span><span class="cx"> </span><span class="cx"> orderby = str(orders.default_order_by()[0].compile(db)) </span><span class="lines">@@ -447,10 +438,10 @@ </span><span class="cx"> ("SELECT orders.order_id AS orders_order_id, orders.description AS orders_description, orders.isopen AS orders_isopen FROM orders ORDER BY %s" % orderby, {}), </span><span class="cx"> ("SELECT orders.user_id AS orders_user_id FROM orders WHERE orders.order_id = :orders_order_id", {'orders_order_id':3}) </span><span class="cx"> ]) </span><del>- objectstore.clear() - m3 = m2.options(undefer('user_id')) </del><ins>+ sess.clear() + q3 = q2.options(undefer('user_id')) </ins><span class="cx"> def go(): </span><del>- l = m3.select() </del><ins>+ l = q3.select() </ins><span class="cx"> print l[3].user_id </span><span class="cx"> self.assert_sql(db, go, [ </span><span class="cx"> ("SELECT orders.order_id AS orders_order_id, orders.user_id AS orders_user_id, orders.description AS orders_description, orders.isopen AS orders_isopen FROM orders ORDER BY %s" % orderby, {}), </span><span class="lines">@@ -464,15 +455,17 @@ </span><span class="cx"> })) </span><span class="cx"> })) </span><span class="cx"> }) </span><del>- l = m.select() </del><ins>+ sess = create_session() + q = sess.query(m) + l = q.select() </ins><span class="cx"> item = l[0].orders[1].items[1] </span><span class="cx"> def go(): </span><span class="cx"> print item.item_name </span><span class="cx"> self.assert_sql_count(db, go, 1) </span><span class="cx"> self.assert_(item.item_name == 'item 4') </span><del>- objectstore.clear() - m2 = m.options(undefer('orders.items.item_name')) - l = m2.select() </del><ins>+ sess.clear() + q2 = q.options(undefer('orders.items.item_name')) + l = q2.select() </ins><span class="cx"> item = l[0].orders[1].items[1] </span><span class="cx"> def go(): </span><span class="cx"> print item.item_name </span><span class="lines">@@ -487,7 +480,8 @@ </span><span class="cx"> m = mapper(User, users, properties = dict( </span><span class="cx"> addresses = relation(mapper(Address, addresses), lazy = True) </span><span class="cx"> )) </span><del>- l = m.select(users.c.user_id == 7) </del><ins>+ q = create_session().query(m) + l = q.select(users.c.user_id == 7) </ins><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 7, 'addresses' : (Address, [{'address_id' : 1}])}, </span><span class="cx"> ) </span><span class="lines">@@ -498,7 +492,8 @@ </span><span class="cx"> m = mapper(User, users, properties = dict( </span><span class="cx"> addresses = relation(m, lazy = True, order_by=addresses.c.email_address), </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> </span><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 7, 'addresses' : (Address, [{'email_address' : 'ja...@be...'}])}, </span><span class="lines">@@ -512,7 +507,8 @@ </span><span class="cx"> m = mapper(User, users, properties = dict( </span><span class="cx"> addresses = relation(m, lazy = True, order_by=[desc(addresses.c.email_address)]), </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> </span><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 7, 'addresses' : (Address, [{'email_address' : 'ja...@be...'}])}, </span><span class="lines">@@ -529,35 +525,39 @@ </span><span class="cx"> addresses = relation(mapper(Address, addresses), lazy = True), </span><span class="cx"> orders = relation(ordermapper, primaryjoin = users.c.user_id==orders.c.user_id, lazy = True), </span><span class="cx"> )) </span><del>- l = m.select(limit=2, offset=1) </del><ins>+ sess= create_session() + q = sess.query(m) + l = q.select(limit=2, offset=1) </ins><span class="cx"> self.assert_result(l, User, *user_all_result[1:3]) </span><span class="cx"> # use a union all to get a lot of rows to join against </span><span class="cx"> u2 = users.alias('u2') </span><span class="cx"> s = union_all(u2.select(use_labels=True), u2.select(use_labels=True), u2.select(use_labels=True)).alias('u') </span><span class="cx"> print [key for key in s.c.keys()] </span><del>- l = m.select(s.c.u2_user_id==User.c.user_id, distinct=True) </del><ins>+ l = q.select(s.c.u2_user_id==User.c.user_id, distinct=True) </ins><span class="cx"> self.assert_result(l, User, *user_all_result) </span><span class="cx"> </span><del>- objectstore.clear() </del><ins>+ sess.clear() </ins><span class="cx"> m = mapper(Item, orderitems, is_primary=True, properties = dict( </span><span class="cx"> keywords = relation(mapper(Keyword, keywords), itemkeywords, lazy = True), </span><span class="cx"> )) </span><del>- l = m.select((Item.c.item_name=='item 2') | (Item.c.item_name=='item 5') | (Item.c.item_name=='item 3'), order_by=[Item.c.item_id], limit=2) </del><ins>+ + l = sess.query(m).select((Item.c.item_name=='item 2') | (Item.c.item_name=='item 5') | (Item.c.item_name=='item 3'), order_by=[Item.c.item_id], limit=2) </ins><span class="cx"> self.assert_result(l, Item, *[item_keyword_result[1], item_keyword_result[2]]) </span><span class="cx"> </span><span class="cx"> def testonetoone(self): </span><span class="cx"> m = mapper(User, users, properties = dict( </span><span class="cx"> address = relation(mapper(Address, addresses), lazy = True, uselist = False) </span><span class="cx"> )) </span><del>- l = m.select(users.c.user_id == 7) - self.echo(repr(l)) - self.echo(repr(l[0].address)) </del><ins>+ q = create_session().query(m) + l = q.select(users.c.user_id == 7) + self.assert_result(l, User, {'user_id':7, 'address' : (Address, {'address_id':1})}) </ins><span class="cx"> </span><span class="cx"> def testbackwardsonetoone(self): </span><span class="cx"> m = mapper(Address, addresses, properties = dict( </span><span class="cx"> user = relation(mapper(User, users), lazy = True) </span><span class="cx"> )) </span><del>- l = m.select(addresses.c.address_id == 1) </del><ins>+ q = create_session().query(m) + l = q.select(addresses.c.address_id == 1) </ins><span class="cx"> self.echo(repr(l)) </span><span class="cx"> print repr(l[0].__dict__) </span><span class="cx"> self.echo(repr(l[0].user)) </span><span class="lines">@@ -573,7 +573,8 @@ </span><span class="cx"> open_orders = relation(mapper(Order, openorders, entity_name='open'), primaryjoin = and_(openorders.c.isopen == 1, users.c.user_id==openorders.c.user_id), lazy = True), </span><span class="cx"> closed_orders = relation(mapper(Order, closedorders,entity_name='closed'), primaryjoin = and_(closedorders.c.isopen == 0, users.c.user_id==closedorders.c.user_id), lazy = True) </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 7, </span><span class="cx"> 'addresses' : (Address, [{'address_id' : 1}]), </span><span class="lines">@@ -594,10 +595,11 @@ </span><span class="cx"> </span><span class="cx"> def testmanytomany(self): </span><span class="cx"> """tests a many-to-many lazy load""" </span><del>- assign_mapper(Item, orderitems, properties = dict( </del><ins>+ mapper(Item, orderitems, properties = dict( </ins><span class="cx"> keywords = relation(mapper(Keyword, keywords), itemkeywords, lazy = True), </span><span class="cx"> )) </span><del>- l = Item.mapper.select() </del><ins>+ q = create_session().query(Item) + l = q.select() </ins><span class="cx"> self.assert_result(l, Item, </span><span class="cx"> {'item_id' : 1, 'keywords' : (Keyword, [{'keyword_id' : 2}, {'keyword_id' : 4}, {'keyword_id' : 6}])}, </span><span class="cx"> {'item_id' : 2, 'keywords' : (Keyword, [{'keyword_id' : 2}, {'keyword_id' : 5}, {'keyword_id' : 7}])}, </span><span class="lines">@@ -605,7 +607,7 @@ </span><span class="cx"> {'item_id' : 4, 'keywords' : (Keyword, [])}, </span><span class="cx"> {'item_id' : 5, 'keywords' : (Keyword, [])} </span><span class="cx"> ) </span><del>- l = Item.mapper.select(and_(keywords.c.name == 'red', keywords.c.keyword_id == itemkeywords.c.keyword_id, Item.c.item_id==itemkeywords.c.item_id)) </del><ins>+ l = q.select(and_(keywords.c.name == 'red', keywords.c.keyword_id == itemkeywords.c.keyword_id, Item.c.item_id==itemkeywords.c.item_id)) </ins><span class="cx"> self.assert_result(l, Item, </span><span class="cx"> {'item_id' : 1, 'keywords' : (Keyword, [{'keyword_id' : 2}, {'keyword_id' : 4}, {'keyword_id' : 6}])}, </span><span class="cx"> {'item_id' : 2, 'keywords' : (Keyword, [{'keyword_id' : 2}, {'keyword_id' : 5}, {'keyword_id' : 7}])}, </span><span class="lines">@@ -619,7 +621,8 @@ </span><span class="cx"> m = mapper(User, users, properties = dict( </span><span class="cx"> addresses = relation(m, lazy = False), </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> self.assert_result(l, User, *user_address_result) </span><span class="cx"> </span><span class="cx"> def testorderby(self): </span><span class="lines">@@ -628,7 +631,8 @@ </span><span class="cx"> m = mapper(User, users, properties = dict( </span><span class="cx"> addresses = relation(m, lazy = False, order_by=addresses.c.email_address), </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 7, 'addresses' : (Address, [{'email_address' : 'ja...@be...'}])}, </span><span class="cx"> {'user_id' : 8, 'addresses' : (Address, [{'email_address':'ed...@be...'}, {'email_address':'ed...@la...'}, {'email_address':'ed...@wo...'}])}, </span><span class="lines">@@ -641,7 +645,8 @@ </span><span class="cx"> m = mapper(User, users, properties = dict( </span><span class="cx"> addresses = relation(m, lazy = False, order_by=[desc(addresses.c.email_address)]), </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> </span><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 7, 'addresses' : (Address, [{'email_address' : 'ja...@be...'}])}, </span><span class="lines">@@ -658,20 +663,24 @@ </span><span class="cx"> addresses = relation(mapper(Address, addresses), lazy = False), </span><span class="cx"> orders = relation(ordermapper, primaryjoin = users.c.user_id==orders.c.user_id, lazy = False), </span><span class="cx"> )) </span><del>- l = m.select(limit=2, offset=1) </del><ins>+ sess = create_session() + q = sess.query(m) + + l = q.select(limit=2, offset=1) </ins><span class="cx"> self.assert_result(l, User, *user_all_result[1:3]) </span><span class="cx"> # this is an involved 3x union of the users table to get a lot of rows. </span><span class="cx"> # then see if the "distinct" works its way out. you actually get the same </span><span class="cx"> # result with or without the distinct, just via less or more rows. </span><span class="cx"> u2 = users.alias('u2') </span><span class="cx"> s = union_all(u2.select(use_labels=True), u2.select(use_labels=True), u2.select(use_labels=True)).alias('u') </span><del>- l = m.select(s.c.u2_user_id==User.c.user_id, distinct=True) </del><ins>+ l = q.select(s.c.u2_user_id==User.c.user_id, distinct=True) </ins><span class="cx"> self.assert_result(l, User, *user_all_result) </span><del>- objectstore.clear() </del><ins>+ sess.clear() </ins><span class="cx"> m = mapper(Item, orderitems, is_primary=True, properties = dict( </span><span class="cx"> keywords = relation(mapper(Keyword, keywords), itemkeywords, lazy = False, order_by=[keywords.c.keyword_id]), </span><span class="cx"> )) </span><del>- l = m.select((Item.c.item_name=='item 2') | (Item.c.item_name=='item 5') | (Item.c.item_name=='item 3'), order_by=[Item.c.item_id], limit=2) </del><ins>+ q = sess.query(m) + l = q.select((Item.c.item_name=='item 2') | (Item.c.item_name=='item 5') | (Item.c.item_name=='item 3'), order_by=[Item.c.item_id], limit=2) </ins><span class="cx"> self.assert_result(l, Item, *[item_keyword_result[1], item_keyword_result[2]]) </span><span class="cx"> </span><span class="cx"> </span><span class="lines">@@ -680,7 +689,8 @@ </span><span class="cx"> m = mapper(User, users, properties = dict( </span><span class="cx"> address = relation(mapper(Address, addresses), lazy = False, uselist = False) </span><span class="cx"> )) </span><del>- l = m.select(users.c.user_id == 7) </del><ins>+ q = create_session().query(m) + l = q.select(users.c.user_id == 7) </ins><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 7, 'address' : (Address, {'address_id' : 1, 'email_address': 'ja...@be...'})}, </span><span class="cx"> ) </span><span class="lines">@@ -690,7 +700,8 @@ </span><span class="cx"> user = relation(mapper(User, users), lazy = False) </span><span class="cx"> )) </span><span class="cx"> self.echo(repr(m.props['user'].uselist)) </span><del>- l = m.select(addresses.c.address_id == 1) </del><ins>+ q = create_session().query(m) + l = q.select(addresses.c.address_id == 1) </ins><span class="cx"> self.assert_result(l, Address, </span><span class="cx"> {'address_id' : 1, 'email_address' : 'ja...@be...', </span><span class="cx"> 'user' : (User, {'user_id' : 7, 'user_name' : 'jack'}) </span><span class="lines">@@ -704,7 +715,8 @@ </span><span class="cx"> m = mapper(User, users, properties = dict( </span><span class="cx"> addresses = relation(mapper(Address, addresses), primaryjoin = users.c.user_id==addresses.c.user_id, lazy = False) </span><span class="cx"> )) </span><del>- l = m.select(and_(addresses.c.email_address == 'ed...@la...', addresses.c.user_id==users.c.user_id)) </del><ins>+ q = create_session().query(m) + l = q.select(and_(addresses.c.email_address == 'ed...@la...', addresses.c.user_id==users.c.user_id)) </ins><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 8, 'addresses' : (Address, [{'address_id' : 2, 'email_address':'ed...@wo...'}, {'address_id':3, 'email_address':'ed...@be...'}, {'address_id':4, 'email_address':'ed...@la...'}])}, </span><span class="cx"> ) </span><span class="lines">@@ -729,7 +741,8 @@ </span><span class="cx"> addresses = relation(mapper(Address, addresses), primaryjoin = users.c.user_id==addresses.c.user_id, lazy = False), </span><span class="cx"> orders = relation(mapper(Order, orders), lazy = False), </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 7, </span><span class="cx"> 'addresses' : (Address, [{'address_id' : 1}]), </span><span class="lines">@@ -755,7 +768,8 @@ </span><span class="cx"> open_orders = relation(mapper(Order, openorders, non_primary=True), primaryjoin = and_(openorders.c.isopen == 1, users.c.user_id==openorders.c.user_id), lazy = False), </span><span class="cx"> closed_orders = relation(mapper(Order, closedorders, non_primary=True), primaryjoin = and_(closedorders.c.isopen == 0, users.c.user_id==closedorders.c.user_id), lazy = False) </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> self.assert_result(l, User, </span><span class="cx"> {'user_id' : 7, </span><span class="cx"> 'addresses' : (Address, [{'address_id' : 1}]), </span><span class="lines">@@ -785,7 +799,8 @@ </span><span class="cx"> addresses = relation(mapper(Address, addresses), lazy = False), </span><span class="cx"> orders = relation(ordermapper, primaryjoin = users.c.user_id==orders.c.user_id, lazy = False), </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> self.assert_result(l, User, *user_all_result) </span><span class="cx"> </span><span class="cx"> def testmanytomany(self): </span><span class="lines">@@ -794,11 +809,11 @@ </span><span class="cx"> m = mapper(Item, items, properties = dict( </span><span class="cx"> keywords = relation(mapper(Keyword, keywords), itemkeywords, lazy=False, order_by=[keywords.c.keyword_id]), </span><span class="cx"> )) </span><del>- l = m.select() </del><ins>+ q = create_session().query(m) + l = q.select() </ins><span class="cx"> self.assert_result(l, Item, *item_keyword_result) </span><span class="cx"> </span><del>-# l = m.select() - l = m.select(and_(keywords.c.name == 'red', keywords.c.keyword_id == itemkeywords.c.keyword_id, items.c.item_id==itemkeywords.c.item_id)) </del><ins>+ l = q.select(and_(keywords.c.name == 'red', keywords.c.keyword_id == itemkeywords.c.keyword_id, items.c.item_id==itemkeywords.c.item_id)) </ins><span class="cx"> self.assert_result(l, Item, </span><span class="cx"> {'item_id' : 1, 'keywords' : (Keyword, [{'keyword_id' : 2}, {'keyword_id' : 4}, {'keyword_id' : 6}])}, </span><span class="cx"> {'item_id' : 2, 'keywords' : (Keyword, [{'keyword_id' : 2}, {'keyword_id' : 5}, {'keyword_id' : 7}])}, </span><span class="lines">@@ -817,7 +832,8 @@ </span><span class="cx"> m = mapper(Order, orders, properties = dict( </span><span class="cx"> items = relation(m, lazy = False) </span><span class="cx"> )) </span><del>- l = m.select("orders.order_id in (1,2,3)") </del><ins>+ q = create_session().query(m) + l = q.select("orders.order_id in (1,2,3)") </ins><span class="cx"> self.assert_result(l, Order, </span><span class="cx"> {'order_id' : 1, 'items': (Item, [])}, </span><span class="cx"> {'order_id' : 2, 'items': (Item, [ </span></span></pre></div> <a id="sqlalchemybranchesschematestobjectstorepy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/test/objectstore.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/test/objectstore.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/test/objectstore.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -9,6 +9,7 @@ </span><span class="cx"> </span><span class="cx"> class HistoryTest(AssertMixin): </span><span class="cx"> def setUpAll(self): </span><ins>+ self.install_threadlocal() </ins><span class="cx"> db.echo = False </span><span class="cx"> users.create() </span><span class="cx"> addresses.create() </span><span class="lines">@@ -18,6 +19,7 @@ </span><span class="cx"> addresses.drop() </span><span class="cx"> users.drop() </span><span class="cx"> db.echo = testbase.echo </span><ins>+ self.uninstall_threadlocal() </ins><span class="cx"> def setUp(self): </span><span class="cx"> objectstore.clear() </span><span class="cx"> clear_mappers() </span><span class="lines">@@ -77,6 +79,7 @@ </span><span class="cx"> </span><span class="cx"> class VersioningTest(AssertMixin): </span><span class="cx"> def setUpAll(self): </span><ins>+ self.install_threadlocal() </ins><span class="cx"> objectstore.clear() </span><span class="cx"> global version_table </span><span class="cx"> version_table = Table('version_test', db, </span><span class="lines">@@ -86,6 +89,7 @@ </span><span class="cx"> ).create() </span><span class="cx"> def tearDownAll(self): </span><span class="cx"> version_table.drop() </span><ins>+ self.uninstall_threadlocal() </ins><span class="cx"> def tearDown(self): </span><span class="cx"> version_table.delete().execute() </span><span class="cx"> objectstore.clear() </span><span class="lines">@@ -136,6 +140,7 @@ </span><span class="cx"> </span><span class="cx"> class UnicodeTest(AssertMixin): </span><span class="cx"> def setUpAll(self): </span><ins>+ self.install_threadlocal() </ins><span class="cx"> objectstore.clear() </span><span class="cx"> global uni_table </span><span class="cx"> uni_table = Table('uni_test', db, </span><span class="lines">@@ -145,6 +150,7 @@ </span><span class="cx"> def tearDownAll(self): </span><span class="cx"> uni_table.drop() </span><span class="cx"> uni_table.deregister() </span><ins>+ self.uninstall_threadlocal() </ins><span class="cx"> </span><span class="cx"> def testbasic(self): </span><span class="cx"> class Test(object): </span><span class="lines">@@ -162,6 +168,7 @@ </span><span class="cx"> </span><span class="cx"> class PKTest(AssertMixin): </span><span class="cx"> def setUpAll(self): </span><ins>+ self.install_threadlocal() </ins><span class="cx"> db.echo = False </span><span class="cx"> global table </span><span class="cx"> global table2 </span><span class="lines">@@ -195,6 +202,7 @@ </span><span class="cx"> table2.drop() </span><span class="cx"> table3.drop() </span><span class="cx"> db.echo = testbase.echo </span><ins>+ self.uninstall_threadlocal() </ins><span class="cx"> def setUp(self): </span><span class="cx"> objectstore.clear() </span><span class="cx"> clear_mappers() </span><span class="lines">@@ -236,6 +244,7 @@ </span><span class="cx"> class PrivateAttrTest(AssertMixin): </span><span class="cx"> """tests various things to do with private=True mappers""" </span><span class="cx"> def setUpAll(self): </span><ins>+ self.install_threadlocal() </ins><span class="cx"> global a_table, b_table </span><span class="cx"> a_table = Table('a',testbase.db, </span><span class="cx"> Column('a_id', Integer, Sequence('next_a_id'), primary_key=True), </span><span class="lines">@@ -249,6 +258,7 @@ </span><span class="cx"> def tearDownAll(self): </span><span class="cx"> b_table.drop() </span><span class="cx"> a_table.drop() </span><ins>+ self.uninstall_threadlocal() </ins><span class="cx"> def setUp(self): </span><span class="cx"> objectstore.clear() </span><span class="cx"> clear_mappers() </span><span class="lines">@@ -311,6 +321,7 @@ </span><span class="cx"> the newly saved instances receive all the default values either through a post-fetch or getting the pre-exec'ed </span><span class="cx"> defaults back from the engine.""" </span><span class="cx"> def setUpAll(self): </span><ins>+ self.install_threadlocal() </ins><span class="cx"> #db.echo = 'debug' </span><span class="cx"> use_string_defaults = db.engine.__module__.endswith('postgres') or db.engine.__module__.endswith('oracle') or db.engine.__module__.endswith('sqlite') </span><span class="cx"> </span><span class="lines">@@ -331,6 +342,7 @@ </span><span class="cx"> self.table.create() </span><span class="cx"> def tearDownAll(self): </span><span class="cx"> self.table.drop() </span><ins>+ self.uninstall_threadlocal() </ins><span class="cx"> def setUp(self): </span><span class="cx"> self.table = Table('default_test', db) </span><span class="cx"> def testinsert(self): </span><span class="lines">@@ -383,6 +395,7 @@ </span><span class="cx"> class SaveTest(AssertMixin): </span><span class="cx"> </span><span class="cx"> def setUpAll(self): </span><ins>+ self.install_threadlocal() </ins><span class="cx"> db.echo = False </span><span class="cx"> tables.create() </span><span class="cx"> db.echo = testbase.echo </span><span class="lines">@@ -390,6 +403,7 @@ </span><span class="cx"> db.echo = False </span><span class="cx"> tables.drop() </span><span class="cx"> db.echo = testbase.echo </span><ins>+ self.uninstall_threadlocal() </ins><span class="cx"> </span><span class="cx"> def setUp(self): </span><span class="cx"> db.echo = False </span><span class="lines">@@ -1101,6 +1115,7 @@ </span><span class="cx"> class SaveTest2(AssertMixin): </span><span class="cx"> </span><span class="cx"> def setUp(self): </span><ins>+ self.install_threadlocal() </ins><span class="cx"> db.echo = False </span><span class="cx"> objectstore.clear() </span><span class="cx"> clear_mappers() </span><span class="lines">@@ -1128,6 +1143,7 @@ </span><span class="cx"> self.addresses.drop() </span><span class="cx"> self.users.drop() </span><span class="cx"> db.echo = testbase.echo </span><ins>+ self.uninstall_threadlocal() </ins><span class="cx"> </span><span class="cx"> def testbackwardsnonmatch(self): </span><span class="cx"> m = mapper(Address, self.addresses, properties = dict( </span></span></pre></div> <a id="sqlalchemybranchesschematestrelationshipspy"></a> <div class="modfile"><h4>Modified: sqlalchemy/branches/schema/test/relationships.py (1368 => 1369)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/branches/schema/test/relationships.py 2006-05-01 01:49:10 UTC (rev 1368) +++ sqlalchemy/branches/schema/test/relationships.py 2006-05-01 21:53:27 UTC (rev 1369) </span><span class="lines">@@ -44,7 +44,7 @@ </span><span class="cx"> ) </span><span class="cx"> def setUp(self): </span><span class="cx"> global session </span><del>- session = objectstore.Session(bind_to=testbase.db) </del><ins>+ session = create_session(bind_to=testbase.db) </ins><span class="cx"> conn = session.connect() </span><span class="cx"> conn.create(tbl_a) </span><span class="cx"> conn.create(tbl_b) </span><span class="lines">@@ -79,7 +79,8 @@ </span><span class="cx"> d1 = D(); d1.name = "d1"; d1.b_row = b; d1.c_row = c... [truncated message content] |