You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单次查询批量提交所有数据库变更?

Django批量提交数据库变更优化

你当前循环调用create方法,每一次循环都会发起单独的数据库请求,数据量较大时效率极低。可以用Django ORM提供的bulk_create方法实现单次(或少量多次)数据库提交,大幅提升操作性能。

优化后的代码示例

先批量构造对象实例,再一次性提交所有变更:

# 先构造所有要创建的对象实例,不直接写入数据库
objects_list = []
for i in range(100):
    # 实例化模型对象,注意不要调用create方法
    obj = table2(id=i, **some_extra_fields)
    objects_list.append(obj)

# 一次性提交所有对象到数据库
table2.objects.bulk_create(objects_list)

关键注意事项

  • bulk_create会将所有对象打包成少量SQL INSERT语句(具体数量取决于数据库的单请求数据限制),请求次数远少于循环create的次数
  • 该方法不会触发模型的save()方法,也不会发送post_save信号,如果你的模型有自定义的save逻辑,需要额外处理
  • 如果id是模型的自增字段(AutoField),无需手动指定,数据库会自动生成唯一ID
  • 若数据量极大(比如数万条),建议分批次提交(比如每1000条提交一次),避免触发数据库的单请求数据量限制

内容的提问来源于stack exchange,提问作者Mohammad AlQudah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:45:34