交易

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