python – Django Import-Export导入重复键值违反了错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django Import-Export导入重复键值违反了错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1469字,纯文字阅读大概需要3分钟。
内容图文
![python – Django Import-Export导入重复键值违反了错误](/upload/InfoBanner/zyjiaocheng/768/00736eeb738d45bfb2ae4c73da6e3d7e.jpg)
我正在使用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导入重复键值违反了错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。