django 1.5 select_for_update被认为是脆弱的设计

Tre*_*ent 3 python django django-database

Django文档状态

如果你依靠"自动事务"在select_for_update()和后续的写操作之间提供锁定 - 一个极其脆弱的设计,但仍然可能 - 你必须将相关代码包装在atomic()中.从Django 1.6.3开始,在自动提交模式下使用select_for_update()执行查询将引发TransactionManagementError.

为什么这被认为是脆弱的?我原以为这会导致适当的交易.

小智 9

select_for_update 并不脆弱.

我写道"如果你依赖于"自动交易""那么你需要在从1.6升级到1.5时检查你的代码.

如果你不依赖于"自动交易",如果概念没有响铃,甚至更多,那么你不需要做任何事情.

正如yuvi的回答所指出的那样(非常好,谢谢!)当Django遇到无效代码时会引发异常.没有必要考虑这一点,直到你看到一个被TransactionManagementError提出来select_for_update.

  • Django框架核心开发人员的第一篇文章,*fiesta*!就在那里说谢谢你的贡献.希望将来还有其他帖子:-) (2认同)