The documentation for SessionTransaction has a short example to show
how it should be used (http://www.sqlalchemy.org/docs/
unitofwork.myt#unitofwork_transaction):
sess = create_session()
trans = sess.create_transaction()
try:
item1 = sess.query(Item).get(1)
item2 = sess.query(Item).get(2)
item1.foo = 'bar'
item2.bar = 'foo'
except:
trans.rollback()
raise
trans.commit()
What happens to the transaction if the commit fails? Is it rolled
back or is it left hanging in an uncommitted state? I personally have
the urge to structure it like this:
sess = create_session()
trans = sess.create_transaction()
try:
item1 = sess.query(Item).get(1)
item2 = sess.query(Item).get(2)
item1.foo = 'bar'
item2.bar = 'foo'
trans.commit()
except:
trans.rollback()
raise
That way the transaction is always rolled back in the event of an
error, even when the commit fails. In fact, that's the way it's done
within ComposedSQLEngine.transaction(), although that method is not
working with SessionTransactions. Is there a difference between the
two approaches?
Thanks.
~ Daniel
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sqlalchemy-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users