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

如何将数据列表批量插入Django的SQLite3数据库?

解决Django Shell批量插入国家名称到Country表的问题

步骤1:启动Django Shell

打开终端执行:

python manage.py shell

步骤2:处理字符串并批量插入

针对你提供的字符串格式

如果你的国家名称是'Afghanistan', 'Albania', 'Algeria', 'Andorra'这种字符串形式,先转成Python列表再插入:

# 导入模型(替换your_app_name为你的实际应用名)
from your_app_name.models import Country

# 原始字符串转列表
raw_str = "'Afghanistan', 'Albania', 'Algeria', 'Andorra'"
country_names = [name.strip().strip("'") for name in raw_str.split(',')]

# 批量创建数据(高效插入)
Country.objects.bulk_create([Country(country_name=name) for name in country_names])

若已为Python列表格式

如果已经是标准列表['Afghanistan', 'Albania', 'Algeria', 'Andorra'],直接执行:

from your_app_name.models import Country

country_list = ['Afghanistan', 'Albania', 'Algeria', 'Andorra']
Country.objects.bulk_create([Country(country_name=name) for name in country_list])

避免重复插入的优化

如果担心数据库已有重复数据,先过滤再插入:

from your_app_name.models import Country

raw_str = "'Afghanistan', 'Albania', 'Algeria', 'Andorra'"
country_names = [name.strip().strip("'") for name in raw_str.split(',')]

# 获取已存在的国家名称
existing_names = set(Country.objects.values_list('country_name', flat=True))
# 筛选未存在的国家
new_countries = [Country(country_name=name) for name in country_names if name not in existing_names]
# 批量插入新数据
Country.objects.bulk_create(new_countries)

建议优化模型

为避免重复数据,建议给country_name添加唯一约束:

class Country(models.Model):
    country_name = models.CharField(max_length=100, unique=True)

修改后执行迁移:

python manage.py makemigrations && python manage.py migrate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:50:26