批量创建需要事务原子性吗?

Nep*_*nat 10 python database django

我正在使用bulk_createDjango 的方法一次创建多个条目。

为了确保仅在没有异常的情况下才提交更改,我正在考虑添加transaction.atomic()到代码块,但我不确定是否需要添加它。

根据我的理解,我只需要在场景 2中添加它,因为在这种情况下我正在执行多个查询。

场景1

在一次查询中创建 1.000 个条目

Entry.objects.bulk_create([
    Entry(headline='This is a test'),
    Entry(headline='This is only a test'),
    # ...
])
Run Code Online (Sandbox Code Playgroud)

场景2

以 1.000 为一组创建 10.000 个条目

Entry.objects.bulk_create([
    Entry(headline='This is a test'),
    Entry(headline='This is only a test'),
    # ...
], batch_size=1_000)
Run Code Online (Sandbox Code Playgroud)

小智 15

不,对于这两种情况您都不需要这样做。根据Django 源代码,使用原子事务是多余的,bulk_create因为该方法已经使用原子事务。