web-dev-qa-db-ja.com

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))

これは私がSQLite3マネージャー(Firefox拡張機能)で試したSQLステートメントです

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、チュートリアル、自己トラブルシューティングなど、多くのWeb検索を試しましたが、このエラーは解消されません。私がここで間違っているのは正確には何ですか。

15
Sumod

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))
30

%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))
0
DevB2F