Django 批量插入数据的实现方法


Posted in Python onJanuary 12, 2020

项目需求:浏览器中访问django后端某一条url(如:127.0.0.1:8080/get_book/),实时朝数据库中生成一千条数据并将生成的数据查询出来,并展示到前端页面

views.py

from django.shortcuts import render, HttpResponse, redirect
from app01 import models

def get_book(request):
# for循环插入1000条数据

for i in range(1000):


models.Book.objects.create(name='第%s本书'%i)

book_queryset = models.Book.objects.all()   # 将插入的数据再查询出来

return render(request,'get_book.html',locals()) # 将查询出来的数据传递给html页面

urls.py

from django.conf.urls import url
from app01 import views

urlpatterns = [
 url(r'^get_book/',views.get_book)
]

models.py

from django.db import models

class get_book(models.Model):
 title = models.CharField(max_length=64)

get_book.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
  {% load static %}
  <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}" rel="external nofollow" >
  <link rel="stylesheet" href="{% static 'dist/sweetalert.css' %}" rel="external nofollow" >
  <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
  <script src="{% static 'dist/sweetalert.min.js' %}"></script>
</head>
<body>
{% for book_obj in book_queryset %}
   <p>{{ book_obj.title }}</p>
{% endfor %}
</body>
</html>

上述代码书写完毕后启动django后端,浏览器访问,会发现浏览器会有一个明显的卡顿等待时间,这是因为后端在不停的操作数据库,耗时较长,大概需要等待一段时间之后才能正常看到刚刚插入的1000条数据,很明显这样操作数据库的效率太低,那有没有一种方式是专门用来批量操作数据库的呢?答案是肯定的!

bulk_create方法

将views.py中原先的视图函数稍作变化

def get_book(request):
  l = []
  for i in range(10000):
    l.append(models.Book(title='第%s本书'%i))
  models.Book.objects.bulk_create(l) # 批量插入数据
    return render(request,'get_book.html',locals())

代码修改完毕之后其他地方无需改动,重启django项目浏览器重新访问,你会立马发现数据量增大十倍的情况下页面出现的速度比上面还快。

bulk_create方法是django orm特地提供给我们的方便批量操作数据库的方式,效率非常高!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
设计模式中的原型模式在Python程序中的应用示例
Mar 02 Python
新手如何快速入门Python(菜鸟必看篇)
Jun 10 Python
python数据封装json格式数据
Mar 04 Python
python实现支付宝当面付(扫码支付)功能
May 30 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
利用Django-environ如何区分不同环境
Aug 26 Python
Django框架HttpRequest对象用法实例分析
Nov 01 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 Python
Python代码注释规范代码实例解析
Aug 14 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 Python
python处理RSTP视频流过程解析
Jan 11 #Python
pyftplib中文乱码问题解决方案
Jan 11 #Python
python实现实时视频流播放代码实例
Jan 11 #Python
python3下pygame如何实现显示中文
Jan 11 #Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 #Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 #Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 #Python
You might like
php判断字符以及字符串的包含方法属性
2008/08/30 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
Python算术运算符实例详解
2017/05/31 Python
Numpy之random函数使用学习
2019/01/29 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
什么是Python中的匿名函数
2020/06/02 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
机电专业个人求职信范文
2013/12/30 职场文书
自我鉴定写作要点
2014/01/17 职场文书
最常使用的求职信
2014/05/25 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
2015年质检工作总结
2015/05/04 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript