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