交易
你可以使用 engine.begin
打开连接并开始一个事务,如果引发异常或以其他方式提交,将回滚该事务。这是使用事务的隐式方法,因为你没有手动回滚的选项。
with engine.begin() as conn:
conn.execute(products.insert(), price=15)
更明确地说,你可以使用连接开始事务:
with conn.begin() as trans:
conn.execute(products.insert(), price=15)
请注意,我们仍然在连接上调用 execute
。和以前一样,如果引发异常,将提交或回滚此事务,但我们也可以访问该事务,允许我们使用 trans.rollback()
手动回滚。
这可以更明确地完成,如下所示:
trans = conn.begin()
try:
conn.execute(products.insert(), price=15)
trans.commit()
except:
trans.rollback()
raise