On Wednesday, July 17, 2013 7:02:10 PM UTC-4, Michael Bayer wrote: > > because you can transfer control to some other part of the program that > doesn't know what kind of transaction has started; it only knows it needs > to call commit() or can rollback() if something goes wrong. > > It's a simple re-entrant calling pattern, not unlike how a threading.RLock > works, or nesting of context managers, or anything else that nests. > ...
> why do you need the savepoint id ? It seems like you're wanting the core > API, which returns a transactional object specific to that transaction: > http://docs.sqlalchemy.org/en/rel_0_8/core/connections.html#sqlalchemy.engine.Connection.begin_nested > > 1. so would this work? session = SessionFactory() session.begin() transaction = session.begin_nested() transaction.commit() or transaction.rollback() session.commit() even being able to call something a transaction might make this more readable and alleviate some pain. as-is, everything looks a bit too much like it's all part of the same outer transaction, which makes auditing code a bit of a pain. 2. my concern is for missing a commit() / rollback() within nested transactions. > passing in that argument to commit/rollback[ `.commit(savepoint)` > `.rollback(savepoint)` ] would then release / rollback . > > You can't release/commit savepoints out of order, nor can you > release/commit them after the outer transaction has been committed or > rolled back. There is only one order in which operations can proceed. So > the current API is the simplest in that it makes sure you do things this > way. I wouldn't want to do any of those things, and i'd expect an error thrown if a savepoint is gone.. i guess it's just very confusing going from sql where you have named savepoints and can explicitly roll back somewhere; and i've got a if i have [ transaction , savepointA, savepointB , savepointC , savepointD ] , it's nice to be able to say "roll back to savepoint B". -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/groups/opt_out.