[sqlalchemy] question about using SAVEPOINTS

2013-03-18 Thread alonn
from the 
docshttp://docs.sqlalchemy.org/en/latest/orm/session.html#using-savepoint
:

begin_nested()http://docs.sqlalchemy.org/en/latest/orm/session.html#sqlalchemy.orm.session.Session.begin_nested
 may 
be called any number of times, which will issue a new SAVEPOINT with a 
unique identifier for each call.* For each 
begin_nested()http://docs.sqlalchemy.org/en/latest/orm/session.html#sqlalchemy.orm.session.Session.begin_nested
 call, 
a corresponding 
rollback()http://docs.sqlalchemy.org/en/latest/orm/session.html#sqlalchemy.orm.session.Session.rollback
 or 
commit()http://docs.sqlalchemy.org/en/latest/orm/session.html#sqlalchemy.orm.session.Session.commit
 must 
be issued*.
Lets say I call session.begin_nested() after each successfull add something 
like:
for myModule in modules;
session.add(myModule)
session.begin_nested()
try:
session.flush()
   except:
session.rollback()
session.merge(myModule)
session.begin_nested()
transaction.commit()

my question is would a transaction.commit() suffice to commit all of the 
saved SAVEPOINTS or am I suppose to call a commit on each and everyone of 
them (as implied in the docs)

Thanks for the help

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [sqlalchemy] question about using SAVEPOINTS

2013-03-18 Thread Michael Bayer

On Mar 18, 2013, at 4:22 PM, alonn alonis...@gmail.com wrote:

 from the docs:
 
 begin_nested() may be called any number of times, which will issue a new 
 SAVEPOINT with a unique identifier for each call. For each begin_nested() 
 call, a corresponding rollback() or commit() must be issued.
 
 Lets say I call session.begin_nested() after each successfull add something 
 like:
 for myModule in modules;
 session.add(myModule)
 session.begin_nested()
 try:
 session.flush()
except:
 session.rollback()
 session.merge(myModule)
 session.begin_nested()
 transaction.commit()
 
 my question is would a transaction.commit() suffice to commit all of the 
 saved SAVEPOINTS or am I suppose to call a commit on each and everyone of 
 them (as implied in the docs)


you call a commit for every nested that you dont roll back.   you shouldn't 
call begin_nested in your except: there.

the pattern is:

for item in something:
session.begin_nested()
try:
do something
session.commit()
except:
session.rollback()
session.commit()




 
 Thanks for the help
 
 
 -- 
 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?hl=en.
 For more options, visit https://groups.google.com/groups/opt_out.
  
  

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.