Django08-批量创建数据
通过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='',gender=0, depart=models.Depart.objects.filter(pk='').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='',gender=0, depart=models.Depart.objects.filter(pk='').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。
Django08-批量创建数据的更多相关文章
- bulk_create(lst) 批量创建数据
# 批量创建数据 # Create your views here. from django.db import models from django.shortcuts import HttpRes ...
- $Django Paginator分页器 批量创建数据
1批量插入数据: User_list=[]for i in range(100): User_list.append(User(name='小明%s'%i,pwd='abcdefg%s'%i))# 两 ...
- Django --- ajax结合sweetalert使用,分页器,bulk_create批量创建数据
目录 ajax结合sweetalert使用 bulk_create批量插入数据 分页器的使用 ajax结合sweetalert使用 ajax可以在不刷新页面的情况下与后端进行交互,在对数据进行操作的时 ...
- shell批量创建数据表的一个方法
#!/bin/bash #批量新建数据表 #删除`符号,具体原因我也没搞懂 for i in {1..30};do mysql 地址 -u账号 -p密码 -e "use 库名;CREATE ...
- Shell 脚本批量创建数据库表
使用 Shell 脚本批量创建数据表 系统:Centos6.5 64位 MySQL版本:5.1.73 比如下面这个脚本: #!/bin/bash #批量新建数据表 for y in {0..199}; ...
- 基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表
本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创 ...
- 批量导入数据到hive表中:假设我有60张主子表如何批量创建导入数据
背景:根据业务需要需要把60张主子表批量入库到hive表. 创建测试数据: def createBatchTestFile(): Unit = { to ) { val sWriter = new P ...
- PG数据库创建并执行存储过程批量插入数据
记录一下PG数据库创建并执行存储过程批量插入数据的SQL: create or replace function addId() returns boolean AS $BODY$ declare i ...
- C#批量插入数据到Sqlserver中的四种方式
我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...
- .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库
批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
随机推荐
- (转)Unity_什么是Draw Call? 什么是Batch?
開發遊戲時,一定被時時提醒要減少 Draw Call,當然UNITY也不例外,打開Game Window裡的 Stats,可以看到 Draw Call 與 Batched 的數字.但到底甚麼是 Dra ...
- Python闭包举例
Python闭包的条件: 1.函数嵌套.在外部函数内,定义内部函数. 2.参数传递.外部函数的局部变量,作为内部函数参数. 3.返回函数.外部函数的返回值,为内部函数. 举例如下: def line_ ...
- vue 中结合百度地图获取当前城市
首先需要去百度地图开发者平台申请 ak http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5 在index.html 中引入script ...
- 记一次node进程无法kill 问题
起因 开发反馈测试环境某 node 进程使用 pm2 log 查看日志提示端口冲突,pm2 restart 重启进程问题依旧,但该服务可正常访问. 处理过程: 访问该服务 URL 业务正常,查看 Ng ...
- 用于模拟百度分享的errno错误代码
0:成功;-1:由于您分享了违反相关法律法规的文件,分享功能已被禁用,之前分享出去的文件不受影响.;-2:用户不存在;请刷新页面后重试;-3:文件不存在;请刷新页面后重试;-4:登录信息有误,请重新登 ...
- express中遇到的一个小问题“403”
这样子的一个express简单项目文件执行会出现403 Forbidden的错误: var express = require('express'); var app = express(); app ...
- 查看CentOS版本
1. 查看核心版本 $ uname -or $ uname -a 2. rpm $ rpm --query centos-release [On CentOS] $ rpm --query redha ...
- 【转】搭建和配置Syncthing发现和中继服务器
搭建和配置Syncthing发现和中继服务器 折腾借口 Syncthing好是挺好的,但就是同步不给力,公共网络服务其质量参差不齐,网络也说不清.最好的解决方案还是自己搭建发现服务器Synct ...
- 升级GCC以支持C++11
本文主要介绍在Linux系统下,如何升级GCC以支持C++11.目前来看GCC是对C++11支持程度最高最多的编译器,但需要GCC4.8及以上版本. 本文使用操作系统:Centos 6.4 Desk ...
- 平安技术开放日质量保证技术专场第一期 [附部分 ppt]
4月8号在上海平安大厦,平安证券和Tester联合举办了一场质量保证技术专场,附上部分PPT 平安技术开放日介绍 ppt下载 A/B测试的大数据架构实践 链接: http://pan.baidu. ...