随笔 - 139  文章 - 0 评论 - 0 阅读 - 33825
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

通过views.py文件中创建

第1种方法
循环创建数据, 这种方法不推荐,因为每一次循环都会连接一次数据库,效率较慢

def user_list(request):
    user_all = models.User.objects.all()
    for i in range(302):
        models.User.objects.create(username='user-%s'%(i))
    return render(request, 'user/user_list.html', {'user_all': user_all})        

 

第2种方法
先创建一个空列表,将循环的对象加入到空列表中,再一次性在数据库中创建,效率高

要使用bulk_create方法进行批量创建

def user_list(request):
    user_all = models.User.objects.all()
        user_list = []
        for i in range(302):
             obj = models.User(username='user-%s'%(i),pwd='123',gender=0, depart=models.Depart.objects.filter(pk='1').first())
             user_list.append(obj)
        models.User.objects.bulk_create(user_list, batch_size=100)   #batch_size可以理解为批处理参数,控制每一次批量添加数据的数量
    return render(request, 'user/user_list.html', {'user_all': user_all})

也可以使用列表解析替代for循环会更快

user_list = [models.User(username='user-%s'%(i),pwd='123',gender=0, depart=models.Depart.objects.filter(pk='1').first()) for i in range(302)]
models.User.objects.bulk_create(user_list, batch_size=100)    

 

第3种方法
批量导入时数据重复的解决方法

如果导入数据过多,导入时出错了,或者你手动停止了,导入了一部分,还有一部分没有导入。或者你再次运行上面的命令,你会发现数据重复了,怎么办呢?
django.db.models中还有一个函数叫get_or_create(),有就获取过来,没有就创建,用它可以避免重复,但是速度可以会慢些,因为要先尝试获取,看看有没有

只要把bulk_create换成get_or_create就不会重复导入数据了

models.User.objects.get_or_create(user_list, batch_size=100) 

返回值是(BlogObject, True/False)新建时返回 True, 已经存在时返回 False。

 

posted on   longfei2021  阅读(234)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示