带有Python的Mysql无法插入具有自动增量ID的记录,为啥?

Posted

技术标签:

【中文标题】带有Python的Mysql无法插入具有自动增量ID的记录,为啥?【英文标题】:Mysql with Python can't insert record with autoincrement id, why?带有Python的Mysql无法插入具有自动增量ID的记录,为什么? 【发布时间】:2015-02-03 07:47:31 【问题描述】:

我在 mysql 数据库中创建了一个包含两列的表 'test':(age int, name TEXT)。

然后我使用以下代码(带有列表)插入一条记录:

record = [12, 'Tom']
cursor.execute("insert into test values(%s,%s)", record)

以上代码在mysql中工作(我使用python 2.7进行编程)。

然后我删除旧表并想为新表添加一个 AUTO_INCREMENT P_id 字段,方法是将以下代码添加到 CREATE TABLE sql:

P_id int(11) PRIMARY KEY AUTO_INCREMENT,

新表有效,我在 mysql 中找到它。 但是,当我尝试使用相同的代码插入新记录时:

record = [12, 'Tom']
cursor.execute("insert into test values(%s,%s)", record)

但它不起作用并报告:

OperationalError: (1136, "Column count doesn't match value count at row 1")

看来我应该自己添加 P_id 的值? 但它应该自动增加,我可以省略吗? 我是mysql的新手,请帮助详细说明。

这是我在 *** 的第一次问题,感谢您的帮助。

【问题讨论】:

【参考方案1】:

使用这个查询:

insert into test (age,name) values(%s,%s)

您的代码将如下所示:

record = [12, 'Tom']
cursor.execute("insert into test (age,name) values(%s,%s)", record)

【讨论】:

您的回答非常及时,非常棒。 效果很好。非常感谢。我现在意识到默认设置应该更新所有字段。在 *** 的第一次体验真是太棒了。 :)

以上是关于带有Python的Mysql无法插入具有自动增量ID的记录,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL atomic insert-if-not-exists 具有稳定的自动增量

插入具有自动增量 id 的行 - Playframework Scala - Slick

MySQL 多行插入是不是获取顺序自动增量 ID?

为啥 MySQL 增加自动增量,但不插入行?

如何在 MySQL 中使用自动增量字段复制行并插入到同一个表中?

MySQL插入,如何从插入中获取增量ID [重复]