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

Django中如何批量插入含固定cost_id的数据到SQLite数据库?

Django批量插入多组关联数据实现方案

嗨,这个需求用Django内置的bulk_create()方法就能完美解决,这是Django里批量插入数据最高效的方式之一,我给你详细说下实现步骤:

1. 先确认你的模型定义

首先假设你的模型(比如叫PackingCost)是这样的(如果字段类型和实际不符,你可以调整对应类型):

from django.db import models

class PackingCost(models.Model):
    packing_id = models.CharField(max_length=10)
    multiplier = models.CharField(max_length=10)
    cost_id = models.IntegerField()

    class Meta:
        # 可根据需求自定义表名或索引
        db_table = 'packing_cost'

2. 生成批量插入的实例列表

利用Python的zip()函数把你的两个数组一一配对,同时给每条数据指定cost_id=1,生成模型实例的列表:

# 你的原始数据
packing_ids = ['1', '2', '3', '4']
multipliers = ['11', '21', '31', '41']
target_cost_id = 1

# 生成要插入的对象列表
bulk_objects = [
    PackingCost(
        packing_id=p_id,
        multiplier=multi,
        cost_id=target_cost_id
    )
    for p_id, multi in zip(packing_ids, multipliers)
]

3. 执行批量插入

调用模型的bulk_create()方法完成一次性插入:

# 执行批量插入,只会发送一条SQL语句到数据库
PackingCost.objects.bulk_create(bulk_objects)

一些实用小贴士

  • 效率优势:bulk_create()只会生成一条INSERT语句,相比循环调用save()(每条数据都发一次SQL),在数据量越大时效率提升越明显
  • 数据一致性:要确保packing_ids和multipliers两个数组的长度一致,否则zip()会以较短的数组长度为准,导致部分数据丢失
  • 特殊字段处理:如果你的模型包含auto_now_add、ForeignKey这类字段,bulk_create()也能正确处理这些字段的默认值或关联关系

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:12:35