python – Django Import-Export导入重复键值违反了错误

python – Django Import-Export导入重复键值违反了错误,第1张

概述我正在使用Django 1.10, Python 3.6和PostgreSQL作为数据库后端的项目,其中我有一个名为’Article’的模型,我需要从CSV文件导入数据.我已成功导入我的第一个CSV文件以下字段: id,link&类别 它的ID字段从1到1960开始 然后在下一个文件中,我从1961年开始向ID字段开始,但它显示以下错误: Line number: 1961 – duplicate 我正在使用Django 1.10,Python 3.6和Postgresql作为数据库后端的项目,其中我有一个名为’Article’的模型,我需要从CSV文件导入数据.我已成功导入我的第一个CSV文件以下字段:
ID,link&类别
它的ID字段从1到1960开始
然后在下一个文件中,我从1961年开始向ID字段开始,但它显示以下错误:

line number: 1961 – duplicate key value violates unique constraint “article_article_pkey” DETAIL: Key (ID)=(1961) already exists.

即使我在Django管理员中看到我的文章模型,它也会显示从1960年开始的ID

这是我的models.py:

class Article(models.Model):   ID = models.autoFIEld(primary_key=True)   link = models.URLFIEld(max_length=255)   category = models.CharFIEld(max_length=255,choices=CategorIEs)

这是admin.py

@admin.register(Article)    class Articleadmin(importExportModeladmin):    resource_class = vIEws.ArticleResource    Readonly_fIElds = ('ID',)
解决方法 我已经触发了问题:
实际上,问题是Postgresql主键顺序,它不与表行同步.
这就是为什么当我插入一个新行时,我得到一个重复的键错误,因为串行数据类型中隐含的序列返回一个已经存在的数字.

要解决这个问题,我们必须重置Postgresql的ID顺序,
这是一步一步的指南:

>登录数据库外壳并连接到您的数据库
>首先,检查表的ID列的最大值为SELECT MAX(ID)FROM your_table;
>然后,检查ID的下一个值是什么:SELECT nextval(‘your_table_ID_seq’);
>如果nextval是下一个Max值,那么它是正确的.例如MAX = 10& NEXTVAL = 11
>否则,将表的ID_seq重置为:

开始;

– 更新计数器时防止并发插入

LOCK table your_table IN EXCLUSIVE MODE;

– 更新序列

SELECT setval(‘your_table_ID_seq’,COALESCE((SELECT MAX(ID)1 FROM your_table),1),false);

承诺;

总结

以上是内存溢出为你收集整理的python – Django Import-Export导入重复键值违反了错误全部内容,希望文章能够帮你解决python – Django Import-Export导入重复键值违反了错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存