On Sun, Jul 7, 2013 at 11:13 PM, Wayne Werner <wa...@waynewerner.com> wrote: > Which you would then use like: > > > conn = create_conn() > with new_transaction(conn) as tran: > rows_affected = do_query_stuff(tran) > if rows_affected == 42: > tran.commit()
Yep. There's a problem, though, when you bring in subtransactions. The logic wants to be like this: with new_transaction(conn) as tran: tran.query("blah") with tran.subtransaction() as tran: tran.query("blah") with tran.subtransaction() as tran: tran.query("blah") # roll this subtransaction back tran.query("blah") tran.commit() tran.query("blah") tran.commit() 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() I don't like the look of this. It might work, but it's hardly ideal. This is why I like to be able to nest usages of the same name. ChrisA -- http://mail.python.org/mailman/listinfo/python-list