使用PostgreSQL在Django中查找读写锁,例如,选择共享

使用PostgreSQL在Django中查找读写锁,例如,选择共享,sql,django,postgresql,concurrency,django-orm,Sql,Django,Postgresql,Concurrency,Django Orm,我使用PostgreSQL在Django中锁定读写锁 我知道 在上面,我需要 我发现了这个 我找不到任何第三方库为Django实现此功能 现在我想知道: Django ORM中没有实现这一点有什么好的原因吗 有人知道这方面的第三方库吗 或者任何简单的工作 您不能将逻辑封装在使用select for share的pl/pgsql函数中,然后从django调用该函数吗 Django ORM中没有实现这一点有什么好的原因吗 您发布的标签可能提供了原因:没有人有足够的动力来编写补丁 有人知道这方面的

我使用PostgreSQL在Django中锁定读写锁

  • 我知道
  • 在上面,我需要
  • 我发现了这个
  • 我找不到任何第三方库为Django实现此功能
现在我想知道:

  • Django ORM中没有实现这一点有什么好的原因吗
  • 有人知道这方面的第三方库吗
  • 或者任何简单的工作

  • 您不能将逻辑封装在使用select for share的pl/pgsql函数中,然后从django调用该函数吗

  • Django ORM中没有实现这一点有什么好的原因吗
  • 您发布的标签可能提供了原因:没有人有足够的动力来编写补丁

  • 有人知道这方面的第三方库吗
  • 对不起,不是我。
    如果你想放弃Django,换成其他的ORM,那么你必须问问自己:“Django中缺少了我需要的一个特性……在其他ORM中我会错过什么特性?”

  • 或者任何简单的工作
  • 可能不会。但这里有一些选择:

  • 我知道的每个ORM都有一个到原始SQL的转义填充。你可能知道,但不愿意使用它。。。但是,由于您也缺乏提出请求的动机,这可能意味着您没有数百个需要
    SELECT FOR SHARE
    功能的请求。所以你应该考虑一下。<李>
  • 如上所述的存储过程
  • 最后一条评论来自一位男士(David Schwärzle),他声称自己有一个解决方案(不是专门针对PostgreSQL,而是一个解决方案)。。。也许你应该试着联系他
  • 我还没有尝试过,但添加所需功能的方法可能是

  • 您可以使用原始查询轻松实现

    从django.db导入连接
    query=f“”“从共享“”的“appname\u modelname”中选择*,其中id={obj\u id}”
    使用connection.cursor()作为游标:
    cursor.execute(查询,无)
    
    obj_id
    是python变量。
    appname\u modelname
    是django在数据库中创建的表的名称。默认情况下,Django将小写的应用程序名和模型名与下划线组合在一起。

    只需执行原始SQL
    SELECT。。。是否要更新
    ?还有什么比这更简单的呢?