Django 批量插入数据的实现方法
作者:Hank·Paul 发布时间:2023-01-11 10:40:58
标签:Django,批量插入
项目需求:浏览器中访问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特地提供给我们的方便批量操作数据库的方式,效率非常高!!!
来源:https://www.cnblogs.com/baohanblog/p/12181659.html


猜你喜欢
- 目录mysqladmin命令UPDATE user 语句SET PASSWORD 语句root密码丢失的情况(待验证)mysqladmin命
- 在 Internet 连接无处不在的今天,我们忽然有了另外一个需求,离线 Web。Gmail, Google Reader, Zoho 这些
- 1.什么是并发编程并发编程是实现多任务协同处理,改善系统性能的方式。Python中实现并发编程主要依靠进程(Process):进程是计算机中
- 1. 逆转字符串的三种方法1.1. 模拟C++中方法, 定义一个空字符串来实现通过设置一个空字符串, 然后讲参数中的字符串从后往前遍历, 使
- 这两天在用python的bottle框架开发后台管理系统,接口约定使用RESTful风格请求,前端使用jquery ajax与接口进行交互,
- XA事务支持限于InnoDB存储引擎。MySQL XA实施是针对外部XA的,其中,MySQL服务器作为资源管理器,而客户端程序作为事务管理器
- 首先给出展示结果,大体就是检测工业板子是否出现。采取检测的方法比较简单,用的OpenCV的模板检测。大体思路opencv读取视频将视频分割为
- 1. 内置下载器中间件顺序{'scrapy.downloadermiddlewares.ajaxcrawl.AjaxCrawlMid
- 我们在Python中经常使用会用到matplotlib画图,有些曲线和点的形状、颜色信息长时间不用就忘了,整理一下便于查找。安装matplo
- 假设我们有一个很简单的OTU表:现在对这个表格进行遍历,一般写法为:import pandas as pdotu = pd.read_csv
- 一、什么是"非构造函数"的继承?比如,现在有一个对象,叫做"中国人"。var Chinese = {
- BETWEEN 运算符用于 WHERE 表达式中,选取介于两个值之间的数据范围。BETWEEN 同 AND 一起搭配使用,语法如下:WHER
- 本文实例讲述了Flask框架单例模式实现方法。分享给大家供大家参考,具体如下:单例模式:程序运行时只能生成一个实例,避免对同一资源产生冲突的
- 主要我是要解决一下几个问题: 1. apply和call的区别在哪里 2. apply的其他巧妙
- 今天在intellij调试spark的时候感觉每次有新的一段代码,都要重新跑一遍,如果用spark-shell,感觉也不是特别方便,如果能像
- show profile是由Jeremy Cole捐献给MySQL社区版本的。默认的是关闭的,但是会话级别可以开启这个功能。开启它可以让My
- Go 中接口也是一个使用得非常频繁的特性,好的软件设计往往离不开接口的使用,比如依赖倒置原则(通过抽象出接口,分离了具体实现与实际使用的耦合
- 这篇文章主要介绍了python如何实现不可变字典inmutabledict,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- Sql Server中清空所有数据表中的记录清空所有数据表中的记录:exec sp_msforeachtable @Comman
- 本文用python在TCP的基础上实现一个HTTP客户端, 该客户端能够复用TCP连接, 使用HTTP1.1协议. 一. 创建HT