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中pip更新和三方插件安装说明
Jul 08 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
Oct 29 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
简单了解python代码优化小技巧
Jul 08 Python
python之列表推导式的用法
Nov 29 Python
python将数组n等分的实例
Dec 02 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
使用pth文件添加Python环境变量方式
May 26 Python
python用700行代码实现http客户端
Jan 14 Python
Python3使用Selenium获取session和token方法详解
Feb 16 Python
python 制作网站小说下载器
Feb 20 Python
python实现简单反弹球游戏
Apr 12 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源代码数组统计count分析
2011/08/02 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
php绘制一个扇形的方法
2015/01/24 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
vue+iview分页组件的封装
2020/11/17 Vue.js
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
linux系统都有哪些运行级别
2016/03/26 面试题
Python如何实现单例模式
2016/06/03 面试题
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
《十六年前的回忆》教学反思
2014/02/14 职场文书
保险专业大学生职业规划书
2014/03/03 职场文书
我为自己代言广告词
2014/03/18 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
幼儿园亲子活动总结
2014/04/26 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
婚前协议书标准版
2014/10/19 职场文书
县委务虚会发言材料
2014/10/20 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
高中政治教学反思
2016/02/23 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
Apache POI的基本使用详解
2021/11/07 Servers