Django批量插入bulk_create超大数据量上限如何设计?

语法: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)

如果数据量较大,上限设置多大好呢?或者有什么好的批量插入方案

阅读 1.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏