pymssql INSERT 不会自动增加 ID
Posted
技术标签:
【中文标题】pymssql INSERT 不会自动增加 ID【英文标题】:pymssql INSERT won't auto increment ID 【发布时间】:2017-10-12 09:43:32 【问题描述】:我在我的 django 项目中使用 pymssql 来连接数据库。 我正在尝试使用 execute() 方法进行插入。 但是我收到此错误:
无法将值 NULL 插入到列“ID”、表 ITEMS
ID 列是主键,因此据我所知,它应该由 sql 本身填充。 这是我的插入命令:
bill_id = execute("""
INSERT INTO ITEMS(COlUMN1,COlUMN2, COlUMN3,COlUMN4,COlUMN5)
VALUES (%d, %d, %d, %d, %d);
""", (1713, 6, 929, 1184, 25))
并且这些 COLUMN 都不是 ID。 谁能告诉我做错了什么?
【问题讨论】:
为什么不用Django模型与数据库交互? @mhawke 我做不到。我正在做一个相当大的项目,这不是我的决定。 如果表不是由 Django 创建的,那么 ID 字段可能没有设置AUTO_INCREMENT
。您需要指定 id 或更改列以使其自动递增。
@Alasdair 谢谢。可能是这样。我将如何更改列?
您需要运行适当的ALTER TABLE
语句。我不知道 mysql 的确切语法。
【参考方案1】:
如果 id 列不是自增键列,它将不起作用。如果您在 SQL 中的 create table 语句中定义列,则它不会自动成为自动增量列。你必须定义它。也许您应该首先进行查询以获取 id 列的最大值。其次,您可以增加值并将主列添加到您的插入语句。
我发现这个链接使用 django 元数据 api。
https://docs.djangoproject.com/en/1.9/ref/models/meta/#migrating-from-the-old-api
【讨论】:
谢谢,这就是我最终所做的,但我仍然无法弄清楚为什么 id 没有被 sql 设置。该列是自动递增的,因此它应该自行递增。 好的,这是一个 MySQL 数据库。 尝试以下显示表的结构。 dev.mysql.com/doc/refman/5.7/en/show-columns.html 好的,你使用 MS-SQL Server。下面向您展示了显示表元数据的可能性。首先分析结构。如果您 100% 确定它是一个自动增量列。我不能说它有什么原因。 ***.com/questions/3930338/…. 感谢您的帮助。我很感激。我会尽快试试这个以上是关于pymssql INSERT 不会自动增加 ID的主要内容,如果未能解决你的问题,请参考以下文章