使用pandas to_sql将数据帧追加到sql server中的现有表会产生IntegrityError

我尝试将我的pandas数据框附加到sql服务器中的现有数据表,如下所示。我在数据中的所有列名都与数据库表完全相同。

df.to_sql(table_name,engine,schema_name,index=False,method='multi',if_exists='append',chunksize=100)

但是失败了,并且出现如下错误:

IntegrityError: ('23000',"[23000] [microsoft][ODBC Driver 17 for SQL Server]
[SQL Server]Cannot insert explicit value for identity column in table 'table_name' 
when IDENTITY_INSERT is set to OFF. (544) (SQLParamData)")

我不知道这意味着什么,应该怎么做才能使它起作用。看来问题是IDENTITY_INSERT is set to OFF ?。欣赏是否有人可以帮助我理解为什么以及我可以做什么。谢谢。

iCMS 回答:使用pandas to_sql将数据帧追加到sql server中的现有表会产生IntegrityError

按照Layman的说法,数据帧由主键值组成,并且该插入在数据库中不允许为Model.destroy({})。这意味着主键将由数据库本身生成。另一点是,主键可能在数据帧和数据库中重复,并且您不能在表中添加重复的主键。

您有两个选择: 首先:检入数据库,哪一列是您的主键列或标识列,一旦确定,则从数据框中删除该列,然后尝试将其保存到数据库中。

第二:打开INDENTITY INSERT INDENTITY_INSERT is set to OFF,然后重试。 如果您的数据框不是由唯一的主键组成,则可能还会出现另一个错误。

如果您都尝试过这两个选项后都出错,请使用SET IDENTITY_INSERT Table1 ON

用表模式和数据框值更新您的问题
本文链接:https://www.f2er.com/2192800.html

大家都在问