我有一个名为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)'

10-04 21:35