Как я могу выполнить операцию поиска с помощью необработанного sql-запроса в django SQLITE

Я пытаюсь найти строку в поле STAT таблицы detection, как показано ниже:

query = "select detection_class, stream_id, track_id, detection_time, " \
                    "frame_id" \
                    " FROM stats where  stream_id = %s "\
                    "detection_class like %%s%% group by track_id; "
with connection.cursor() as cursor:
      cursor.execute(query,[stream_id, detection_class])

Здесь, когда я даю слово или какой-то символ, которые содержатся в detection_class, он возвращает сообщение об ошибке, как этоTypeError('not all arguments converted during string formatting')),. И также если я попробую как detection_class=%s, то он работает правильно, когда я даю слово, в противном случае он возвращает None.

Не используйте форматирование строк при выполнении запросов. Вместо этого используйте заполнитель ИЛИ именованный параметр.

query = """
SELECT detection_class, 
       stream_id, 
       track_id, 
       detection_time,
       frame_id
FROM stats
WHERE stream_id = :stream_id
AND detection_class LIKE :dclass 
GROUP BY track_id;
"""

with connection.cursor() as cursor:
      params = {"stream_id": stream_id, "dclass": f"%{detection_class}%"}
      cursor.execute(query, params)

Я считаю, что это также можно сделать с помощью метода placeholder, как показано ниже.

query = """
SELECT detection_class, 
       stream_id, 
       track_id, 
       detection_time,
       frame_id
FROM stats
WHERE stream_id = ?
AND detection_class LIKE %?%
GROUP BY track_id;
"""

with connection.cursor() as cursor:
      cursor.execute(query, (stream_id, detection_class,))
Вернуться на верх