交易
你可以使用 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