- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
If you were relying on “automatic transactions” to provide locking between select_for_update() and a subsequent write operation — an extremely fragile design, but nonetheless possible — you must wrap the relevant code in atomic().
Django’s default behavior is to run with an open transaction which it commits automatically when any built-in, data-altering model function is called
select_for_update
后跟例如
write
实际上会在两个事务中运行?如果是这种情况,那么没有
select_for_update
变得无用,因为它的重点是
lock the rows until a data altering function was called ?
最佳答案
select_for_update
只会在单个事务的上下文中锁定选定的行。如果你使用自动提交,它不会像你想象的那样做,因为每个查询实际上都是它自己的事务(包括 SELECT ... FOR UPDATE
查询)。将您的 View (或其他函数)包装在 transaction.atomic
中它会做你期望它做的事情。
关于django - select_for_update 开发 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17149587/
我想创建一个模型,其 ID 等于该模型当前最大 ID 加一(如自动增量)。我正在考虑使用 select_for_update 执行此操作,以确保当前最大 ID 不存在竞争条件,如下所示: with t
我用过 select_for_update()很多。但是,在我使用过的所有情况下,它都是通过这样的经理来完成的: with transaction.atomic(): transaction
我正在做一个类似于电子商务的项目,在这个项目中,我有一些模型来表示存储中有一定数量的产品,用户可以购买一定数量的产品,只要它不超过存储的数量.我想避免在服务器收到多个购买同一产品的请求时发生竞争条件。
Django documentation指出: If you were relying on “automatic transactions” to provide locking between s
select_for_update 的 Django 文档说 Using select_for_update() on backends which do not support SELECT ...
我有一个代码,应该可以在并发请求和高负载下工作。 我写了一个例子来更好地理解我正在尝试做的事情: def add_tag(): with transaction.atomic():
我有一行整数值,该行有很多并发请求,我希望每次读取操作后都进行更新操作(增量),并保持数据一致,只能一个请求读取->同时更新。 我做了一些研究并弄清楚了 select_for_update(),我还想
我有一些代码,如果嵌套调用 select_for_update() 会简单很多,但恐怕我自己陷入了僵局。 例子: with transaction.atomic(): uu1 = UniUse
我知道如果我们有多个并发用户, select_for_update 会锁定正在查询的记录。但它是否也会影响对查询记录的评估。 例如,如果用户 A 和用户 B 基于一个 bool 变量 'Availab
我有一个由 MySQL 数据库支持的 Django 应用程序。我最近将一段代码从请求流中移出并放入了一个流程中。该代码使用 select_for_update() 锁定数据库中受影响的行,但现在我偶尔
代码崩溃 @transaction.atomic def cancel_one(o_id): order= Order.objects.select_for_update().get(id=o
如果我执行 select_for_update,该锁何时/如何释放?一些示例代码: for rec_id in list(1,2,3): record = MyModel.objects.se
有谁知道您是否可以在单个查询中同时执行 .select_for_update() 和 .select_related() 语句?如: employee = get_object_or_404(Empl
我在一个大型项目中使用 django。 我从模型的 save 内部调用 celery task,该模型调用一个方法,该方法在循环中调用另一个方法。即: celery task --> function
Django documentation州 If you were relying on “automatic transactions” to provide locking between sel
正如 Django 文档所说,select_for_update返回一个 Queryset。但是 get 没有。现在我有一个查询,我确信它只会返回一个元组。但我还需要为此事务获取锁。所以我正在做类似的
我遇到了一个奇怪的情况,当在 transaction.atomic() block 中使用 select_for_update() 时,Django 和 Postgres 中记录的查询顺序不同。 基本
我有类似的东西: newsletter = Newsletter.select_for_update().latest() newsletter.started_sending = timezone.
我有一个如下表: SELECT id, name FROM node; +----+------+ | id | name | +----+------+ | 5 | na | +----+--
我是一名优秀的程序员,十分优秀!