On 07/07/2013 06:43 AM, Chris Angelico wrote:
The 'with' statement doesn't allow this. I would need to use some kind
of magic to rebind the old transaction to the name, or else use a list
that gets magically populated:
with new_transaction(conn) as tran:
tran[-1].query("blah")
with subtransaction(tran):
tran[-1].query("blah")
with subtransaction(tran):
tran[-1].query("blah")
# roll this subtransaction back
tran[-1].query("blah")
tran[-1].commit()
tran[-1].query("blah")
tran[-1].commit()
The other option is to build the magic into the new_transaction class, then
your code will look like:
with new_transaction(conn) as tran:
tran.query("blah")
with tran.subtransaction():
tran.query("blah")
with tran.subtransaction():
tran.query("blah")
# roll this subtransaction back
tran.query("blah")
tran.commit()
tran.query("blah")
tran.commit()
This would definitely make more sense in a loop. ;)
--
~Ethan~
--
http://mail.python.org/mailman/listinfo/python-list