django,如何使用bulk_create(objs,batch_size = None)

时间:2017-05-05 09:01:04

标签: python django

bulk_create()中,batch_size的含义是什么? 我尝试了两个代码,

Person.objects.bulk_create([
    Person (name='Tom', age='24', job='student', hobby='football'),
    Person (name='Steve', age='33', job='doctor', hobby='movie'),
    Person (name='Mike', age='55', job='professor', hobby='tennis'),
    ])

Person.objects.bulk_create([
    Person (name='Tom', age='24', job='student', hobby='football'),
    Person (name='Steve', age='33', job='doctor', hobby='movie'),
    Person (name='Mike', age='55', job='professor', hobby='tennis'),
    ], batch_size=2)

在第二种情况下,我添加了batch_size,但这两个代码没有差异。

batch_size的含义是什么?如何使用此batch_size

2 个答案:

答案 0 :(得分:0)

考虑到您要创建的对象列表大约为10000,并且如果您将批处理大小指定为100,则每100个对象将以批量创建的方式创建。对于较小的列表,您将看不到任何区别。但是对于较大的列表(例如,具有可变批次大小的10000多个)。

答案 1 :(得分:0)

batch_size 参数控制在单个查询中创建的对象数量。默认是批量创建所有对象,但 SQLite 除外,默认情况下每个查询最多使用 999 个变量。

例如,如果您要批量创建 100k 个对象并将 batch_size 设置为 1000,django 将执行 100 个查询来完成请求(每个查询创建 1000 个对象)。