iJK
iJK

Reputation: 4765

Error while executing query

I get an error message on this query

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

and it says

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

I am clearly missing something but I don't know what. Any ideas?

Upvotes: 4

Views: 4710

Answers (1)

Mike DeSimone
Mike DeSimone

Reputation: 42805

self.model.objects.raw() expects the query result to contain primary keys from the model self.model, so it can turn these into a list of objects for the function result.

What you really need to do is execute the SQL directly, and not through a manager. Your code will probably look like this:

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

I haven't tried this myself, though.

Upvotes: 16

Related Questions