On Sat, 2010-07-24 at 08:06 -0700, manman wrote:

> new_a=A()
> session.begin()
> session.add(new_a)
> session.flush()
> new_b=B()
> new_b.a_id=new_a.id
> session.add(new_b)
> 
> try:
>   session.commit()
> except:
>   session.rollback()
>   raise
> 
> this code is right? when error all be rollback?
> 


Should be, yes.  You may verify by throwing an exception yourself:


new_a = A()
session.begin()
session.add(new_a)
session.flush()
new_b = B()
new_b.a_id = new_a.id
session.add(new_b)

try:
    raise Exception("commit hasn't happened, so neither new_a nor new_b should 
be persisted after the rollback")
    session.commit()
except:
    session.rollback()
    raise


Lance

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to