Python Django过滤器和更新原子性
更新筛选记录时,如果要确保在执行此Python Django过滤器和更新原子性,python,django,django-models,orm,atomicity,Python,Django,Django Models,Orm,Atomicity,更新筛选记录时,如果要确保在执行此更新之前,筛选的行不会被其他过程更改,是否需要选择\u进行\u更新,或者此筛选器+更新原子性是否保证开箱即用 也就是说,这是: with transaction.atomic(): Foo.objects.select_for_update().filter(id=1).update(**kwargs) 相当于: Foo.objects.filter(id=1).update(**kwargs) ? 我正在使用Django 1.6.x.简短回答: 当
更新
之前,筛选的行不会被其他过程更改,是否需要选择\u进行\u更新
,或者此筛选器+更新原子性是否保证开箱即用
也就是说,这是:
with transaction.atomic():
Foo.objects.select_for_update().filter(id=1).update(**kwargs)
相当于:
Foo.objects.filter(id=1).update(**kwargs)
?
我正在使用Django 1.6.x.简短回答: 当所有内容都在一个查询(您的案例)中生成时,您不需要使用
select\u for\u update
更长的回答:
它调用“脏读”,并由默认情况下通常使用的“读提交”事务隔离级别覆盖。您真的不应该再使用Django 1.6。