加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何在Django中执行表/行锁

发布时间:2021-04-01 09:29:09 所属栏目:MySql教程 来源:网络整理
导读:在Django在Apache上运行或与多个Gunicorn工作器一起运行的生产环境中,它存在并发问题的风险. 因此,我很惊讶地发现Django的ORM没有明确支持表/行锁定.它非常支持事务,但这只解决了一半的并发问题. 使用MySQL后端,在Django中执行锁定的正确方法是什么?或者在D

在Django在Apache上运行或与多个Gunicorn工作器一起运行的生产环境中,它存在并发问题的风险.

因此,我很惊讶地发现Django的ORM没有明确支持表/行锁定.它非常支持事务,但这只解决了一半的并发问题.

使用MySQL后端,在Django中执行锁定的正确方法是什么?或者在Django的框架中还有其他什么东西可以使它们变得不必要吗? 最佳答案 Django没有明确提供API来执行表锁定.根据我的经验,精心设计的代码很少需要锁定整个表,并且大多数并发问题可以通过行级锁定来解决.这是最后的努力:它不能解决并发问题,它只会杀死任何并发尝试.

如果您确实需要表级锁定,则可以使用游标并执行原始SQL语句:

from django.db import connection

with connection.cursor() as cursor:
    cursor.execute("LOCK TABLES %s READ",[tablename])
    try:
        ...
    finally:
        cursor.execute("UNLOCK TABLES;")

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读