【Django入门】——查询集QuerySet介绍
文章目录
- 1. 懒惰查询
- 2. 查询缓存
- 3. 查询切片
- 4. 判断有无
在文章【Django入门】——通过模型类查询MySQL数据库基本操作中,我们知道函数all()
、filter()
、exclude()
、order_by()
等的返回值都是QuerySet
类型,对该类型的返回值可以继续使用上述查询函数。QuerySet
类型具有一些特性:
1. 懒惰查询
在使用返回值类型为QuerySet
的函数进行查询时,即使得到了QuerySet
类型的返回值,也并不意味着此时通过模型类完成了对数据库的查询操作,只有当使用查询集中的数据时,才会真正完成对数据库的查询操作。也就是说,对于下述代码,在# 1
处,并不会产生对数据库的实际查询,只有到# 2
处,才会发生数据库查询。
>>> from booktest.models import BookInfo
>>> books = BookInfo.objects.all() # 1
>>> books # 2
<QuerySet [<BookInfo: BookInfo object (1)>, <BookInfo: BookInfo object (2)>, <BookInfo: BookInfo object (3)>, <BookInfo: BookInfo object (4)>]>
2. 查询缓存
所谓查询缓存是指,当使用的同一个查询集时,第一次使用时会发生数据库的实际查询,然后查询结果会被缓存起来,之后再使用这个查询集时,使用的只是缓存中的结果,而不会发生重复的查询。即对于下列案例,在# 1
处不会发生实际的数据库查询,只有在# 2
处会发生查询,且# 3
处由于使用了和# 2
处相同的查询集,则# 3
处直接使用经# 2
查询出来的数据集。
>>> books = BookInfo.objects.all() # 1
>>> [_ for _ in books] # 2
[<BookInfo: BookInfo object (1)>, <BookInfo: BookInfo object (2)>, <BookInfo: BookInfo object (3)>, <BookInfo: BookInfo object (4)>]
>>> [_ for _ in books] # 3
[<BookInfo: BookInfo object (1)>, <BookInfo: BookInfo object (2)>, <BookInfo: BookInfo object (3)>, <BookInfo: BookInfo object (4)>]
3. 查询切片
查询集具有和Python中列表和元组类似,支持切片功能,语法也基本一致:QuerySet[start:end:step]
,但是需要注意的是,查询集的下标不予许为负。
4. 判断有无
最后补充一点,有时候如果查询集中数据为空,那么对该查询集进一步操作则会产生异常,则代码中需要进行异常处理,而查询集支持一个exist()
函数,可以判断其是否为空,若不为空返回True
,否则返回False
。
>>> books = BookInfo.objects.all()
>>> books.exists()
True
>>> books[0:0].exists()
False
【Django入门】——查询集QuerySet介绍相关推荐
- 【django】查询集QuerySet
一.概念 Django的ORM中存在 查询集 的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调⽤如下过滤器⽅法时,Django会返回查询集(⽽不是简单的列表): ...
- Django框架——查询集QuerySet
目录 1.概念 2.两大特性 (1)惰性执行: (2)缓存: 3.限制查询集 1.概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合 ...
- sql server限制查询条数_18. Django 2.1.7 查询集 QuerySet
上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象.Q对象.聚合查询等功能. 不管什么查询,返回的结果都基本是查询集QuerySet,如 ...
- django 两个查询集(querySet)的并集和交集
一.获取两个同一模型下查询集queryset的并集使用 | 和union方法 # 获取同一模型下两个查询集的并集# 解决代码如下:records = query1 | query2# 如果不想拥有重复 ...
- python教学查询,python基础教程之查询集 QuerySet和管理器Manager
查询集 QuerySet 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据. ...
- python遍历queryset_查询集 QuerySet
1 概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): a ...
- 查询集 QuerySet
1 概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): a ...
- python django orm查询集总结
1 .什么是ORM (Object Relational Mapping ) 它的作用是在关系型数据库和业务实体对象做一个映射,我们在操作具体业务对象的时候就可以省去了和SQL语句打交道,只需要简单的 ...
- python遍历queryset_Django QuerySet查询集原理及代码实例
一 概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): a ...
最新文章
- 2021-05-08 docker save与docker export的镜像区别
- python对文件中的关键词查找替换,实现自动获取配置
- javaandroid知识点汇总整理(不定期更新)
- 基于FPGA的IIR滤波器设计
- 【转】刨根究底字符编码【2.0版】(1):开篇
- HDFS教程(02)- HDFS命令汇总
- 时空轨迹数据挖掘综述
- Capte4 布朗运动和伊藤公式
- linux删除mysql用户_如何删除MySQL用户帐户
- 万字长文讲透AI艺术:缘起、意义和未来(下篇)
- 【Unity3D】相机跟随
- iOS实现网速实时监测
- c++ mfc实现中英文菜单的动态切换
- 在c语言中 函数的作用是什么,C语言程序中函数的定义
- vscode编译Window c++程序缺少vc运行库解决方法
- 今天遭到鄙视了。突然感觉自己昏昏沉沉的过日子 究竟不是个事 自己得努力了!~!
- 谈谈对this对象的理解?
- 运用小数据逆袭,一家地区超市让沃尔玛甘拜下风
- 'GridSearchCV' object has no attribute 'best_params_'解决办法
- python 自动办公ppt_基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
热门文章
- React-native学习-8-长列表FlatList和SectionList分组列表
- An unexpected error has occurred. Conda has prepared the above report. 解决办法
- Android 源码编译 及 mk文件解读
- cad和python哪个好学_同是FreeCAD他效率为何那么高?大神教你用python打造专属工作台...
- 青魔法Python(持续更新)
- MYSQL索引失效场景
- Kenneth Cole联手Zynga,为Rollic旗下超休闲游戏《High Heels!》带来同类首个“骄傲月”合作活动
- NetStream 记录
- docker 基础命令 ,容器存为镜像,载入镜像,生成容器
- 【Java】Java基础训练之超市购物程序设计