我已经为此苦苦挣扎了好几个小时,现在我想哭,因为我无法弄清楚发生了什么。
这是我的数据的简化版本:
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但我不确定如何处理上面的替换。