我有一个名为Games的mysql表,我正在尝试存储从metacritic API检索的数据。该表的架构如下。
CREATE TABLE `Games` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) NOT NULL,
`metacriticURL` varchar(256) NOT NULL,
`rlsDate` date DEFAULT NULL,
`metacriticRating` varchar(16) DEFAULT NULL,
`metacriticScore` varchar(16) DEFAULT NULL,
`platform` varchar(16) NOT NULL,
PRIMARY KEY (`id`)
)
尝试使用MySQLdb API将数据插入表时,出现以下错误:
OperationalError(1136,“列数与行中的值数不匹配
1“)
以下是相关代码:
db = MySQLdb.connect(host = "localhost",
user = "root",
passwd = "secretpassword",
db = "GamesDB")
cur = db.cursor()
insertQuery = 'INSERT into Games (name,
metacriticURL,
rlsDate,
metacriticRating,
metacriticScore,
platform) VALUES (%s %s %s %s %s %s)'
insertData = ('Game Name', 'http://www.website.com/some/path', datetime.datetime.strptime('2015-11-05', "%Y-%m-%d"), 'M', '74', 'ps4')
cur.execute(insertQuery, insertData)
我正在进一步查找错误,并从上方查看错误消息字符串。我已经调试了好几天,所有值在执行调用之前看起来都很好。我的insertData中有6个值,并且我在SQL查询字符串中声明了6列,因此我不确定列数如何不匹配。我已经在上面的代码示例中为此文章添加了硬编码的值。
任何见解/想法将不胜感激!
最佳答案
您是否尝试过此操作(%s,%s,%s,%s,%s,%s)?
insertQuery = 'INSERT into Games (name,
metacriticURL,
rlsDate,
metacriticRating,
metacriticScore,
platform) VALUES (%s, %s, %s, %s, %s, %s)'