前提
既にあるデータベースのテーブルを、変数を使って更新したい。
実現したいこと
テーブル「table_a」のカラム名「slipno」が変数noと一致する同じレコードの、
カラム名「status」を変数str_aで、カラム名「delete_day」を変数dで、カラム名「dalete_time」を変数tで、それぞれ上書きしたい。
エラー情報
TypeError: execute expected at most 2 arguments, got 5
該当のソースコード
Python
1import sqlite3 2import datetime 3 4 5db = 'test.db' 6conn = sqlite3.connect(db) 7cur = conn.cursor() 8 9no = 22 10str_a = '削除済み' 11d = tmp.date() 12t = tmp.time() 13 14cur.execute("UPDATE table_a SET status=?,delete_day=?,dalete_time=? WHERE slipno=?", str_a,d,t,no) 15
試したこと
補足情報(FW/ツールのバージョンなど)
Python 3.10
よろしくお願いいたしますm(_ _)m
cur.execute("UPDATE table_a SET status=?,delete_day=?,dalete_time=? WHERE slipno=?", str_a,d,t,no)
引数をリストかタプルにする必要があります。
cur.execute("UPDATE table_a SET status=?,delete_day=?,dalete_time=? WHERE slipno=?", (str_a,d,t,no))
回答ありがとうございます。
エラーで:sqlite3.InterfaceError: Error binding parameter 2 - probably unsupported type.
がでます。
データベースの方の問題でしょうか?カラムslipnoはintegerでそれ以外はstringになっているのです。
ソースコードの tmp という変数がどうなっているのか分からなのですが、string ということであれば、
d = str(tmp.date())
t = str(tmp.time())
とするとよいかもしれません。
ありがとうございます。望み通りの結果になりました。

回答1件
あなたの回答
tips
プレビュー