アメグラ2号のブログ

1980年代後半の古き良きビデオゲームのほか、オッサンの個人的備忘録

python sqlite3 SQL文に変数を使う<UPDATE>

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)