OperationalError: около "%": синтаксическая ошибка с sqlite3 в Python

Я использую sqlite3 пакет в Python и пытается выбрать одну запись из таблицы с именем orders, Я хотел бы получить запись, где значение для столбца order_date заканчивается в 18 (это varchar столбец, где фактическое значение этой записи "20.10.2008").

Согласно руководству по подобным вопросам, я построил запрос следующим образом:

sql = """SELECT * FROM orders
            WHERE order_date LIKE %s"""

args = ['%' + '18']

c.execute(sql, args)

Но я получаю это обратно:

---------------------------------------------------------------------------
OperationalError                          Traceback (most recent call last)
<ipython-input-51-e6a345ebe6eb> in <module>
      6 args = ['%' + '18']
      7 
----> 8 c.execute(sql, args)
      9 conn.commit()
     10 

OperationalError: near "%": syntax error

Я попытался структурировать запрос несколькими способами, но каждый раз получаю одну и ту же ошибку. Согласно другим вопросам, которые я просматривал, это должно работать. Что не так?

1 ответ

Решение

Вы должны использовать ?в качестве заполнителя для переменной связывания вместо %s:

sql = """SELECT * FROM orders
            WHERE order_date LIKE ?"""
Другие вопросы по тегам