私はこれに何時間も苦労していて、何が起こっているのか理解できないので、今は泣きたい気がします。
これが私のデータの簡略版です:
mydata = [ { 'id': 123, 'thing': 'ghi', 'value': 1 }, { 'id': 456, 'thing': 'xyz', 'value': 0 } ]
これは私が持っているコードです:
import MySQLdb as mdb
con = None
con = mdb.connect('localhost', 'testing', 'anothervalue', 'andanother');
cur = con.cursor()
sql = "INSERT INTO `tablename` ( `id`, `thing`, `value` ) VALUES ( %(id)s, %(thing)s, %(value)s )"
cur.executemany( sql, ( mine for mine in mydata ) )
con.close()
私が予想したことは、2行がtablenameに挿入されることでした。実際に発生するのは、スクリプトがエラーなしで実行され、行が挿入されないことです。
私は何が間違っているのですか?手動で単一のINSERTを実行すると、テーブルに適切に挿入されるため、MySQLデータベースの問題ではなく、データベースに変数を渡す方法がわかっていると思います。
私が持っている追加の質問は、値をフロートとして挿入する方法です。現時点では、テーブルにTINYTEXT NOT NULLとして値の定義があります。これを、 FLOAT NOT NULLにしたいと思いますが、上記の置換を処理する方法がわかりません。