首页 > 其他分享 >django批量插入数据bulk_create

django批量插入数据bulk_create

时间:2023-05-04 19:45:53浏览次数:36  
标签:10000 Book create django bulk 插入 book

场景

django项目有个接口是插入多条数据,大概是50条数据吧,大概用了3s左右,10条数据为一组,插入不同的数据表中。
3s对于这个接口来说是比较频繁的操作,所以3s是不能容忍的。
目前一直是使用的create的方法,百度了解到有一种批量插入的方法bulk_create
使用之后,接口响应时间稳定在1s左右。

使用

抄的一段网上的案例

不使用批量插入数据的方式
def book(request):
    # 先给book插入10000条数据
    for info in range(10000):
        models.Book.objects.create(title='第%s书'%info)
	# 再将所有的数据展示到前端页面
    book_queryset = models.Book.objects.all()
    return render(request,'book.html',locals())
# 这里我们对于10000次的循环,采取了没循环一次插入一条数据,一直插入了10000次,然后再将数据全部查询处理,传输给前端页面!

# 这里在页面加载的时候是非常耗时的,加载非常缓慢。因此,django的orm自带了一个bulk_create方法,大大缩减了我们插入数据的时间!
使用批量插入的方式
def book(request):
    book_list=[] #先定义一个空列表
	# 再生成10000个对象,此时并没有操作数据库
    for info in range(10000):
        book_obj=models.Book(price='%s'%info)# 把对象添加到列表里
        book_list.append(book_obj)
    models.Book.objects.bulk_create(book_list)  #调用了orm的bulk_create方法
	# 展示到前端页面
    book_queryset = models.Book.objects.all()
    return render(request,'book.html',locals())

标签:10000,Book,create,django,bulk,插入,book
From: https://www.cnblogs.com/TestingShare/p/17372294.html

相关文章

  • Django--数据库迁移命令
    数据库迁移命令我这里用的是Django3.2版本,mysql8.0版本1.我们的模型类需要写在应用下的model.py文件中#Createyourmodelshere.classUser(models.Model):#idintprimarykeyauto_incrementuuid=models.AutoField(primary_key=True)#注意要这个prim......
  • Django--orm介绍
    djangoORM简介"""ORM:对象关系映射"""orm目的就是为了能够让不懂SQL语句的人,通过python面向对象的知识点也能够轻松自如的操作数据库类》》》表对象 》》》 表里面的数据对象点属性》》》字段对应的值#缺点:sql封装死了,有......
  • Django如何更换默认的数据库?
    问题:Django默认的sqlite3不好用。如何更换呢?解决:第一步:配置文件在setting中--更改databaseDATABASES={#'default':{#'ENGINE':'django.db.backends.sqlite3',#'NAME':BASE_DIR/'db.sqlite3',#......
  • django-channel 配置 channel layer 添加redis的账号和密码
    最近公司要使用django-channel搭建socket, 文档:https://channels.readthedocs.io/en/stable/introduction.html文档里面并没有写如果redis有账号和密码的话,怎么配置。配置方法:https://github.com/django/channels/issues/164#issuecomment-220513297如下:CHANNEL_LAYERS......
  • Django--request里面都有什么
    1.打个断点,调试运行。2.查看内容 3.POST里面都有什么?ifrequest.method=="POST":#获取用户提交的数据#print(request.POST)#<QueryDict:{'username':['123'],'password':['233']}>当成dict字典处理即可......
  • Django--基础登录的表单
    HTML页面关键代码<formaction=""method="post"> <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><!--导入jquery-->......
  • Bootstrap + Django - 前端bootstrap-table列表数据使用回调函数控制显示某一列数据
    前端bootstrap-table列表数据使用回调函数控制显示某一列数据1.效果1.有可以操作用户的权限,显示操作列2.无操作用户的权限,不显示操作列2.主要代码1.前端js<script>var$articlesTable=$('#table').bootstrapTable('destroy').bootstrapTable({url:'/team......
  • django 请求与响应
    请求与响应转递数据与接收三个请求方式 三个响应方式 defreq_list(request):#请求1#print(request.method)#m1=request.method#请求2#print(request.GET)#m2=request.GET#请求3#print(request.POST)#m3=......
  • django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.3 or newer is requi
     1、在项目中__init__.py中这个报错原因,python3.5以上版本不支持这种方式frompymysqlimportinstall_as_MySQLdbinstall_as_MySQLdb()解决:importpymysqlpymysql.version_info=(1,4,3,"final",0)#指定了pymysql的版本:1.4.3,按照你版本修改pymysql.install_as_MySQLdb()......
  • Django ORM
    外键正向访问#Filter中访问外键的属性,用双下划线sub_order.objects.filter(add_date='20230401',product__name="可乐",order__order_no='').values()字段名的转换用F模块中的annotate方法fromdjango.db.models.importFsub_order.objects.annotate(prod......