执行下面的代码会产生意外的结果。是因为peewee、sqlite还是我对事务的理解有问题?在
代码创建一个事务,然后调用函数3次,该函数在自己的事务中创建3条记录。函数第1次和第3次成功,但第2次失败。在
我希望在数据库中找到6条记录,其中3条在第一次调用时创建,3条在第三次调用时创建,并且在第二次调用期间创建的记录将被回滚。在
相反,我只找到第三次通话时创建的记录。在
import peewee
class DbTest(peewee.Model):
test = peewee.CharField()
class Meta:
database = db
def test(txt):
with db.transaction():
DbTest.create(test=txt + '1')
DbTest.create(test=txt + '2')
if txt == 'b':
raise
DbTest.create(test=txt + '3')
DbTest().drop_table(True)
DbTest().create_table(True)
with db.transaction():
for txt in ['a', 'b', 'c']:
try:
test(txt)
except:
pass
如果要嵌套事务,可以使用保存点doc link。在
相关问题 更多 >
编程相关推荐