如何将数据列表批量插入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
相关产品推荐
相关产品推荐

