エンジニアのひとりごと

興味あること:機械学習,量子コンピュータ,たまに競馬

MySQL備忘録(カラムを変数で指定したい)

カラム名を変数で指定したいと思ったのでこんなことを書いてやってみた

cur.execute("UPDATE race SET %s=\"%s\", %s=\"%s\", %s=\"%s\" WHERE race_id=\"%s\"",(string[x]+str(i+1),data[x][3*i],string[x]+str(i+1)+"_pay",data[x][3*i+1],string[x]+str(i+1)+"_nin",data[x][3*i+2],race_id))

そしたら,エラーはいたので,調べたら先にsql文を生成してからやるとうまくいくらしい

sql="UPDATE race SET %s=\"%s\", %s=\"%s\", %s=\"%s\" WHERE race_id=\"%s\""%(string[x]+str(i+1),data[x][3*i],string[x]+str(i+1)+"_pay",data[x][3*i+1],string[x]+str(i+1)+"_nin",data[x][3*i+2],race_id)
cur.execute(sql)

これでできた

ちなみに,なんかいじってたらこんなのでもエラー吐かないでいけた

cur.execute("UPDATE race SET %s=\"%s\", %s=\"%s\", %s=\"%s\" WHERE race_id=\"%s\""%(string[x]+str(i+1),data[x][3*i],string[x]+str(i+1)+"_pay",data[x][3*i+1],string[x]+str(i+1)+"_nin",data[x][3*i+2],race_id))