python - Context manager, multiple function calls and transactions -


say do:

with my_connection:     o.first_call() 

where my_connection's __exit__ method calls rollback

and o.first_call in execution calls j.second_call, calls z.third_call. z.third_call inserted record in database, j.second_call inserts record, o.first_call craps out. rollback state before first entered context of my_connection or rollbacked state between o.first_call , j.second_call?

edit: clear, i'm hoping entire thing gets rolled before ever called o.first_call

edit2: i'm hoping if there magic in __enter__, kind of context say, whatever called 1 big transaction.

transactions rolled-back last commit call.

per database api specification v2.0:

.commit()

commit pending transaction database.

.rollback()

... causes database roll start of pending transaction.

so depends on mean "successfully inserted". if insertion finalized call commit, rollback not remove insertion. however, if there no commit, insertion rolled-back.


Comments

Popular posts from this blog

What can cause "Required Package 'IndyCore' not found" when compiling a Delphi 2010 project? -

Change the color of an oval at click in Java AWT -