【发布时间】:2016-02-12 09:46:18
【问题描述】:
我正在使用 Django1.8 和 mysql 数据库。数据库隔离级别是“可重复读取”。 我的代码如下:
@with transaction.atomic():
SomeModel.objects.create(key='aaa') # insert record
insertedRecord = SomeModel.objects.get(key='aaa') # try to fetch inserted record
我遇到的问题是,SomeModel.objects.get(key='aaa') 行会抛出一个DoesNotExist 异常,这意味着这个查询看不到之前创建操作所做的更改。
我错过了什么吗?
【问题讨论】:
-
您可以使用
insertedRecord = SomeModel.objects.create(key='aaa')。 -
谢谢。但我就是想不通为什么会这样?同样在实践中,原子块可以包含多个函数调用,
create的结果不会直接可用。 -
repeatable-read 保证相同的查询返回相同的结果,(我不确定在连接中还是在事务中是这样)。因此,在将行添加到事务或连接中的某处之前运行获取查询。
-
我认为您显示的代码不足以重现您所看到的行为。
标签: python django django-models