MySQLdbのexecuteメソッドで文字列を代入する時の注意点
MySQLdbの軽い使い方は→MySQLdbの使い方 - SELECT * FROM life;
MySQLdbのcursorクラスのexecuteメソッドを使って
import MySQLdb con = MySQLdb.connect(db="hoge") cur = con.cursor() cur.execute("SELECT * FROM hogehoge")
とすることでsqlを実行できる。また、sqlの値を動的に変化させることもできる
id = 10 count = 4 # SELECT * FROM hogehoge WHERE id = 10 AND count = 4 が実行される cur.execute("SELECT * FROM hogehoge WHERE id = %s AND count = %s", (id, count))
だが、文字列を代入してsqlを作ろうと思った場合注意が必要で
name = 'piyopiyo' # これだとエラーになる # cur.execute("SELECT * FROM hogehoge WHERE name = '%s'", (name,)) sql = "SELECT * FROM hogehoge WHERE name = '%s'" % (name,) cur.execute(sql)
の様に、先にsql文を生成しておいてから実行するようする。
何がいけないのか分らないが、とにかく上記の方法にしたら通るのでとりあえずよしとしておこう。