我可以信任Django的bulk_create来保持秩序吗?

k75qkfdt  于 2023-10-21  发布在  Go
关注(0)|答案(2)|浏览(105)

当我这样做的时候:

model_list = [Model(name = 'First'), Model(name = 'Second'), Model(name = 'Third')]
Model.objects.bulk_create(model_list)

我能相信它们会以同样的顺序被创建吗?
即:

pk1 = Model.objects.get(name = 'First').pk
pk2 = Model.objects.get(name = 'Second').pk
pk3 = Model.objects.get(name = 'Third').pk

(pk3 > pk2) and (pk2 > pk1)
piv4azn7

piv4azn71#

我觉得你可以

model_list = [Model(name = 'First'),
              Model(name = 'Second'),
              Model(name = 'Third')]
Model.objects.bulk_create(model_list)

此代码将被转换为以下SQL:

INSERT INTO app_model (name) VALUES ('First'), ('Second'), ('Third')

常规SQL Server不太可能以不同的顺序插入这些行。

lnlaulya

lnlaulya2#

是的,你可以根据Django 4.2的文档来信任https://docs.djangoproject.com/en/4.2/ref/models/querysets/#bulk-create:
此方法以有效的方式将提供的对象列表插入到数据库中(通常只有1个查询,无论有多少对象),并以列表的形式返回创建的对象,顺序与提供的顺序相同。

相关问题