Django框架之批量插入数据
1.Django框架之web框架优化2.Django框架之python后端框架介绍3.Django框架之Django的安装与使用4.Django框架之小白必会三板斧5.Django框架之静态文件6.Django框架之request对象7.Django框架之ORM操作8.Django框架之请求生命周期流程图9.Django框架之路由层10.Django框架之视图层11.Django框架之模板层12.Django框架之模型层13.Django框架之Ajax基础14.Django框架之Ajax进阶15.JS插件补充16.Django框架之序列化组件
17.Django框架之批量插入数据
18.Django框架之分页器使用19.Django框架之form组件20.Django框架之Cookie和Session21.Django框架之中间件22.Django框架之auth模块23.Django便捷函数shortcuts一、项目需求
- 浏览器中访问django后端某一条
- url(如:127.0.0.1:8080/index/)
- 实时朝数据库中生成一千条数据并将生成的数据查询出来
- 并展示到前端页面
二、数据准备
创建模型表
class Book(models.Model): title = models.CharField(max_length=32)
三、单条插入数据
1、前端
{% for book_obj in page_queryset %} <p>{{ book_obj.title }}</p> {% endfor %}
2、后端
def ab_pl(request): # 先给Book插入一千条数据 for i in range (1000): models.Book.objects.create(title=f'第{i}本书') # 再将所有的数据查询并展示到前端页面 book_queryset = models.Book.objects.all() # 最后将查询出来的数据传递给html页面 return render(request, '06 ab_pl.html.html', locals())
3、小结
在上述代码书写完毕后启动django后端,浏览器访问,会发现浏览器会有一个明显的卡顿等待时间。
这不是你的浏览器有问题也不是网速有问题,而是后端再不停的操作数据库,耗时较长,大概需要等待一段时间之后才能正常看到刚刚插入的1000条数据,很明显这样操作数据库的效率太低
当频繁的走数据库操作的时候,效率会呈现指数型下降
那有没有一种方式是专门用来批量操作数据库的呢?答案是肯定的!
四、批量插入数据
在Django的ORM中,提供了bulk_create()
方法来实现批量插入数据。这个方法可以在一次数据库查询中插入多行数据,从而提高插入效率。以下是bulk_create()
方法的基本用法示例:
from myapp.models import MyModel # 创建要插入的数据对象列表 objects = [ MyModel(name='Alice', age=25), MyModel(name='Bob', age=30), MyModel(name='Charlie', age=35) ] # 使用bulk_create()方法批量插入数据 MyModel.objects.bulk_create(objects)
在上面的示例中,假设MyModel
是您的模型类,包含name
和age
字段。您可以创建一个包含要插入数据的对象列表,然后使用bulk_create()
方法将这些对象一次性插入数据库。
需要注意的是,bulk_create()
方法在执行时不会触发模型的信号、自动更新时间戳等操作,因此在使用时需要注意这些方面的处理。
上面示例优化:
def get_book_bulk(request): # 批量插入 boo_list = [] for i in range(1000): book_obj = models.Book.objects.create(title=f'第{i}本书') boo_list.append(book_obj) # 批量插入数据 models.Book.objects.批量插入数据(boo_list) return render(request, 'books.html', locals())
- 代码修改完毕之后其他地方无需改动,重启django项目浏览器重新访问
- 你会立马发现数据量增大十倍的情况下页面出现的速度居然还比上面的版本要快上速度倍!!!
- bulk_create方法是django orm特地提供给我们的方便批量操作数据库的方式,效率非常高!!!
合集:
Django炒面
分类:
Django框架学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!