【问题标题】:How to ensure a SQL like NOLOCK when using Django Model Queries使用 Django 模型查询时如何确保像 NOLOCK 这样的 SQL
【发布时间】:2012-01-26 16:52:34
【问题描述】:

我有一个绑定到现有 MS SQL Server 数据库表的 Django 模型“用户”。我正在阅读表格:

Users.objects.filter(userid='xyz').filter(status='active')

我想知道这会转化为什么锁定结构,例如,这种读取会锁定表吗?在 SQL 中我会这样做:

SELECT * from users (nolock) where userid='xyz' and status='active'

有没有办法通过 Django 模型查询显式指定“nolock”?

在 Django 以及 django-pyodbc 文档中搜索了很多,但没有成功。

谢谢。

ps:使用 django-pyodbc 和 pyodbc 驱动程序

【问题讨论】:

  • 好奇为什么在这种情况下需要 NOLOCK 提示?或者这只是一个很好知道的问题?
  • 我简化了查询来问问题,它更复杂。也很高兴知道:)
  • 很公平 :)...FWIW 我认为您将不得不求助于原始 SQL
  • 是的,我得出了同样的结论。能够看到 Django 生成的一些查询,它们看起来很原始。现在使用原始 SQL。

标签: sql django pyodbc


【解决方案1】:

你可以创建一个视图:

create view dbo.vw_Users
as
select  col1
,       col2
,       ...
from    dbo.Users with (nolock)

让 Django 从视图而不是表中读取。

【讨论】:

  • 是的,我知道我可以做到这一点,或者也可以使用原始 SQL,但想知道是否有办法使用 Django 模型编程结构并强制执行 NOLOCK。还是谢谢。
猜你喜欢
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多