【发布时间】:2013-01-21 18:39:24
【问题描述】:
我已经为此苦苦挣扎了好几个小时,现在我想哭,因为我无法理解发生了什么。
这是我的数据的简化版本:
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 数据库的问题,而是我如何将变量传递到数据库中。
我还有一个问题是如何将 value 作为浮点数插入?目前我将表中的 value 定义为 TINYTEXT NOT NULL,我希望这是 FLOAT NOT NULL 但我我不知道如何处理上面的替换。
【问题讨论】:
-
mydata 是一个字典列表(如上定义)。
标签: python mysql database mysql-python