语法:bulk_create(objs, batch_size=None, ignore_conflicts=False)
batch_size参数控制在单个查询中创建的对象数,默认情况是一次数据库连接将所有创建动作完成,但这在要创建的对象数量和字段数量非常巨大的时候往往是不行的,比如SQLite3一次只允许最多999个变量。batch_size参数的作用其实就类似文件的分块读写,参考下面的例子:
官方关于batch_size使用示例如下:
from itertools import islice
batch_size = 100
objs = (Entry(headline='Test %s' % i) for i in range(1000))
while True:
batch = list(islice(objs, batch_size))
if not batch:
break
Entry.objects.bulk_create(batch, batch_size)
看官方操作大概是接收一个生成器模型对象列表,然后每次提取100,进行批量插入,上述形式跟如下的区别是什么
batch_size = 100
objs = [Entry(headline='Test %s' % i) for i in range(1000)]
Entry.objects.bulk_create(objs, batch_size)
如果数据量较大,上限设置多大好呢?或者有什么好的批量插入方案