python、sqlite3でSQLを書いているときに、あれ?変数を差し込む場合ってどんなだ?と思ったら意外とハマったので書いておこう。
updateしたいときは、
UPDATE tablename SET columnname1='あたた', columnname2='おわぁぁ', WHERE id='001'
と書くけど、変数を差し込む場合は以下のように、
cur.execute("UPDATE %s SET c1=?,c2=? WHERE id=?" % tablename,(x,y,z))
%sでテーブル名を受取り、?3個を後ろのタプルで受取る
class DBconnection: def __init__(self,dbname): self.connection = sqlite3.connect(dbname) self.cur = self.connection.cursor() def Updatedata(self,tablename,x,y,z): self.cur.execute("UPDATE %s SET c1=?,c2=? WHERE id=?" % tablename,(x,y,z)) dbname="ttt" tablename="ppp" x="atata" y="5000" z="001" aaa = DBconnection(dbname) aaa.Updatedata(tablename,x,y,z)