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 ?"""