You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于django-import-export插入数据时自动生成主键ID的疑问

关于django-import-export插入数据时自动生成主键ID的疑问

这完全是预期的正常行为,不用纠结哈!

你日志里看到的两次INSERT语句,其实是django-import-export结合Django ORM工作的典型流程:

  • 第一条不带ID的INSERT INTO "lprovider" ("npi", "provider_id", "first_name", "last_name") VALUES ('1345', NULL, 'CHARLES', 'STEVENS'),一般是包在处理导入数据时的预处理步骤——它会先根据文件内容构建对应的模型实例,这时候实例还没正式保存到数据库,主键ID还未生成,这条语句更多是ORM层面的准备逻辑,不一定会实际执行写入操作;
  • 第二条带ID的INSERT INTO "lprovider" ("id", "npi", "provider_id", "first_name", "last_name") VALUES (278082, '1345', NULL, 'CHARLES', 'STEVENS'),才是真正完成数据保存的执行语句。因为你的模型主键应该是Django默认的AutoField类型,Django ORM在调用save()方法保存实例时,会自动为这类主键生成唯一的自增ID值,而django-import-export是基于Django ORM开发的,自然会继承这个特性,所以会自动填充主键并执行带ID的插入。

另外这个行为和你用的多线程并发没有关系,哪怕是单线程导入,只要用的是自增主键,都会出现类似的日志流程。最终写入数据库的是带正确主键ID的那条数据,不会有重复或者异常问题,放心用就行~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 11:27:58