django 的 bulk_create 是原子的吗?
Posted
技术标签:
【中文标题】django 的 bulk_create 是原子的吗?【英文标题】:Is django's bulk_create atomic? 【发布时间】:2020-12-03 02:12:17 【问题描述】:如果在 django 中使用 bulk_create()
批量创建对象时出现任何失败,Django 会回滚更改吗?还是我应该明确使用transaction.atomic()
?
我的模型中有外键引用,可能不存在于数据库中。
我使用的是 Django 1.11
【问题讨论】:
这在文档中没有指定。所以我认为你必须在它周围放置自己的事务原子才能产生这种效果。 【参考方案1】:bulk_create() 如果没有设置 batch_size 则生成单个查询(除了 SQLite,其中 batch 为 999)
仅当您设置了 batch_size 并且您希望所有以前的批次都被还原时,您才应该执行 transaction.atomic() 块
【讨论】:
以上是关于django 的 bulk_create 是原子的吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取使用 django bulk_create 创建的对象的主键
Django bulk_create 忽略导致 IntegrityError 的行?