Sqlite3 - Обновить таблицу с использованием кода Python - синтаксическая ошибка около% s
Это мой код Python -
cursor.execute("""UPDATE tasks SET task_owner=%s,task_remaining_hours=%s, task_impediments=%s,task_notes=%s WHERE task_id=%s""", (new_task_owner,new_task_remaining_hours,new_task_impediments,
new_task_notes,task_id))
Это оператор SQL, который я пытаюсь использовать в менеджере SQLite3 (расширение Firefox)
UPDATE tasks SET task_owner=%s,task_remaining_hours=%d,task_impediments=%s,task_notes=%s WHERE task_id=%d,("sumod",10,"none","test",1)
Ошибка, которую я получаю, -
sqlite3.OperationalError: near "%": syntax error
Я пробовал много веб-поисков, включая SO, учебные пособия и самодиагностику, но эта ошибка не исчезает. Что именно я делаю неправильно здесь.
Ответы
Ответ 1
Я полагаю, что реализация Python SQLite использует ?
заполнители, в отличие от MySQLdb %s
. Просмотрите документацию.
cursor.execute("""UPDATE tasks SET task_owner = ? ,task_remaining_hours = ?,task_impediments = ?,task_notes = ? WHERE task_id= ? """,
(new_task_owner,new_task_remaining_hours,new_task_impediments,new_task_notes,task_id))
Ответ 2
Также возможно использовать% s:
cursor.execute("UPDATE tasks SET task_owner='%s', task_remaining_hours='%s',
task_impediments = '%s', task_notes = '%s' WHERE task_id= '%s' " %
(new_task_owner,new_task_remaining_hours,new_task_impediments,new_task_notes,task_id))