Sqlite3 - Обновление таблицы с использованием кода Python - синтаксическая ошибка около% s - PullRequest
15 голосов
/ 24 марта 2012

Это мой код 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, учебные пособия и самостоятельное устранение неполадок, но эта ошибка не исчезла.Что именно я здесь не так делаю.

Ответы [ 2 ]

30 голосов
/ 24 марта 2012

Я полагаю, что реализация Python для SQLite использует ? заполнители, в отличие от %s MySQLdb. Просмотр документации.

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))
0 голосов
/ 10 мая 2019

Также возможно использовать% 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...