执行查询时出错

时间:2010-05-26 03:00:38

标签: django

我在此查询中收到错误消息

query = "select count(*) from pgns_game where raw_moves = %s"
params = ('a',)
total_rows = self.model.objects.raw(query, params)

它说

InvalidQuery('Raw query must include the primary key')

我显然遗漏了一些东西,但我不知道是什么。有什么想法吗?

1 个答案:

答案 0 :(得分:16)

self.model.objects.raw()期望查询结果包含模型self.model中的主键,因此它可以将这些键转换为函数结果的对象列表。

您真正需要做的是execute the SQL directly, and not through a manager.您的代码可能如下所示:

from django.db import connection
cursor = connection.cursor()
cursor.execute("select count(*) from pgns_game where raw_moves = %s", ['a'])
total_rows = cursor.fetchone()

但我自己并没有尝试过这个。