上下文管理器,多个函数调用和事务

2024-04-25 11:47:24 发布

您现在位置:Python中文网/ 问答频道 /正文

说我愿意:

with my_connection:
    o.first_call()

其中my_connection__exit__方法调用回滚

o.first_call在其执行中调用j.second_call,它本身调用z.third_call。假设z.third_call成功地在数据库中插入了一条记录,j.second_call也成功地插入了一条记录,但是{}失败了。我将回滚到第一次进入连接上下文之前的状态,还是回滚到o.first_call和{}之间的状态?在

编辑:为了清楚起见,我希望在我打电话给o.first_call之前,所有的事情都能恢复到原来的状态

编辑2:我希望在__enter__中我能做些什么,比如说某种上下文,看看什么叫什么都是一个大交易。在


Tags: 方法数据库编辑my状态with记录exit
1条回答
网友
1楼 · 发布于 2024-04-25 11:47:24

事务将回滚到最后一个commit调用。在

根据Database API Specification v2.0

.commit()

Commit any pending transaction to the database.

.rollback()

... causes the database to roll back to the start of any pending transaction.

所以这取决于你所说的“成功插入”是什么意思。如果插入是通过调用commit完成的,则回滚不会删除插入。但是,如果没有提交,则插入操作将回滚。在

相关问题 更多 >