具体来说,我需要begin
在提交或回滚后调用吗?我看到一些提示新会话总是进入 begin
状态的东西;但我想知道会话开始时发生的自动提交事务。
我什么时候必须发出begin
? 同一会话中的多个begin
s 的行为是否与 MySQL 终端中的行为相同?
我有这样的案例(看评论):
--1 在循环中执行事务的方法:
for ...: #EACH ONE DESERVES TO HAVE OWN TRANSACTION
session.begin()
for ....:
session.execute("insert into...")
session.commit()
--2 在同一会话中调用另一个函数的函数:
def f1(): #can be done standalone
session = Session()
session.begin()
...do stuff
session.commit()
def f2():
session = Session()
session.begin()
a = session.execute("select...")
if stuff_not_fine():
session.rollback() #KILL OF CURRENT TRANSACTION
f1()
session.begin() #CONTINUE WHERE IT LEFT
a = session.execute("select...")
...do rest of stuff