Django过滤器和更新原子性

问题描述 投票:1回答:1

更新过滤的记录时,如果要确保在完成此select_for_update之前不会被其他进程更改过滤的行,是否需要update,还是可以保证此过滤器+更新原子性开箱即用?

即,这是:

with transaction.atomic():
    Foo.objects.select_for_update().filter(id=1).update(**kwargs)

相当于:

Foo.objects.filter(id=1).update(**kwargs)

我正在使用Django 1.6.x。

python django django-models orm atomicity
1个回答
0
投票

简短回答:

当所有内容都在一个查询中时(您的情况),您不需要使用select_for_update

更长的答案:

它称为“脏读取”,并且在“读取已提交”事务隔离级别中涉及,该级别通常默认情况下使用。

© www.soinside.com 2019 - 2024. All rights reserved.