文章目录

  • 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介绍相关推荐

  1. 【django】查询集QuerySet

    一.概念 Django的ORM中存在 查询集 的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调⽤如下过滤器⽅法时,Django会返回查询集(⽽不是简单的列表): ...

  2. Django框架——查询集QuerySet

    目录 1.概念 2.两大特性 (1)惰性执行: (2)缓存: 3.限制查询集 1.概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合 ...

  3. sql server限制查询条数_18. Django 2.1.7 查询集 QuerySet

    上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象.Q对象.聚合查询等功能. 不管什么查询,返回的结果都基本是查询集QuerySet,如 ...

  4. django 两个查询集(querySet)的并集和交集

    一.获取两个同一模型下查询集queryset的并集使用 | 和union方法 # 获取同一模型下两个查询集的并集# 解决代码如下:records = query1 | query2# 如果不想拥有重复 ...

  5. python教学查询,python基础教程之查询集 QuerySet和管理器Manager

    查询集 QuerySet 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据. ...

  6. python遍历queryset_查询集 QuerySet

    1 概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): a ...

  7. 查询集 QuerySet

    1 概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): a ...

  8. python django orm查询集总结

    1 .什么是ORM (Object Relational Mapping ) 它的作用是在关系型数据库和业务实体对象做一个映射,我们在操作具体业务对象的时候就可以省去了和SQL语句打交道,只需要简单的 ...

  9. python遍历queryset_Django QuerySet查询集原理及代码实例

    一 概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): a ...

最新文章

  1. 2021-05-08 docker save与docker export的镜像区别
  2. python对文件中的关键词查找替换,实现自动获取配置
  3. javaandroid知识点汇总整理(不定期更新)
  4. 基于FPGA的IIR滤波器设计
  5. 【转】刨根究底字符编码【2.0版】(1):开篇
  6. HDFS教程(02)- HDFS命令汇总
  7. 时空轨迹数据挖掘综述
  8. Capte4 布朗运动和伊藤公式
  9. linux删除mysql用户_如何删除MySQL用户帐户
  10. 万字长文讲透AI艺术:缘起、意义和未来(下篇)
  11. 【Unity3D】相机跟随
  12. iOS实现网速实时监测
  13. c++ mfc实现中英文菜单的动态切换
  14. 在c语言中 函数的作用是什么,C语言程序中函数的定义
  15. vscode编译Window c++程序缺少vc运行库解决方法
  16. 今天遭到鄙视了。突然感觉自己昏昏沉沉的过日子 究竟不是个事 自己得努力了!~!
  17. 谈谈对this对象的理解?
  18. 运用小数据逆袭,一家地区超市让沃尔玛甘拜下风
  19. 'GridSearchCV' object has no attribute 'best_params_'解决办法
  20. python 自动办公ppt_基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

热门文章

  1. React-native学习-8-长列表FlatList和SectionList分组列表
  2. An unexpected error has occurred. Conda has prepared the above report. 解决办法
  3. Android 源码编译 及 mk文件解读
  4. cad和python哪个好学_同是FreeCAD他效率为何那么高?大神教你用python打造专属工作台...
  5. 青魔法Python(持续更新)
  6. MYSQL索引失效场景
  7. Kenneth Cole联手Zynga,为Rollic旗下超休闲游戏《High Heels!》带来同类首个“骄傲月”合作活动
  8. NetStream 记录
  9. docker 基础命令 ,容器存为镜像,载入镜像,生成容器
  10. 【Java】Java基础训练之超市购物程序设计