我想在Django中使用以下SQL查询,但在直接尝试使用原始SQL后我无法使用它。 SQL在PostgreSQL查询窗口上执行时直接工作但在Django上没有工作。
SQL是在数字22522之前找到立即的较低值。我想在QuerySet格式或原始SQL中使用它。在下面添加了SQL查询 -
SELECT id, name, zip
FROM region
WHERE zip >= (SELECT max(zip) FROM region WHERE zip < 22522)
AND zip <= (SELECT min(zip) FROM region WHERE zip>22522)
ORDER BY zip ASC LIMIT 1
以下是我尝试在原始查询格式中使用的代码。我在c.execute()
打印结果数据中正确地看到了任何其他简单的SQL查询。
from django.db import connection
with connection.cursor() as c:
c.execute("SELECT id, name, zip FROM region WHERE zip>=(SELECT max(zip)
FROM region WHERE zip<22522) AND zip<=(SELECT min(zip) FROM region
WHERE zip>22522) ORDER BY zip ASC LIMIT 1")
for row in c.fetchall():
print(row[1])
答案 0 :(得分:0)
为了以QuerySet格式返回结果,您需要从Djano模型开始,例如:
class Person(models.Model):
first_name = models.CharField(...)
last_name = models.CharField(...)
birth_date = models.DateField(...)
>>> for p in Person.objects.raw('SELECT * FROM myapp_person'):
print(p)
有关更多详细信息,请访问Django文档:Django Documentation