聚合与分组查询,F与Q查询
from django.db.models import Q
查询书籍名称是python入门或者价是555.55的书
book_queryset = models.Book.objects.filter(Q('title'='python入门')|Q('price'=555.55))
print(book_queryset)
Q查询进阶用法 用Q产生对象 然后再使用
q = Q()
q.connector('or')
添加查询条件 title__icontains为查询条件,同其他查询方式的写法
q.children.append(('title__icontains', 'p'))
res = modles.Book.objects.filter(q)
print(res)
惰性查询
res1 = modles.Book.objects.all()
res2 = modles.Book.objects.values('title')
only会将括号内字段对应的值,直接封装在返回的对象中,点该字段,不会再去数据库查询,但如果点的不是括号内的字段,就会去数据库查询
res3 = modles.book.objects.only('title')
for r in res1:
print(r.title)
defer会将除括号内的字段之外的其他字段对应的值,直接封装在返回的对象中,点其他字段,不会再去数据库查询,如果点该字段,就会去数据库查询
res4 = modles.Book.objects.defer('tilte')
for r in res4:
print(r.title)
select_related会自动进行连表查询,然后将连表之后的数据全部查询出来并封装在返回的对象中
select_related括号内只能放外键字段,并且不能是多对多字段
如果括号内外键字段所关联的表中还有外键字段,还可以继续连表 select_related(外键字段_外键字段_外键字段...)
res5 = modles.Book.objects.select_related('publish')
for r in res5:
print(r.publish.name)
prefetch_related 看起来像连表查询,其实类似于子查询
prefetch_related括号内只能放外键字段,且不能是多对多字段
如果括号内外键字段所关联的表中还有外键字段,还可以继续连表 prefetch_related(外键字段_外键字段_外键字段...)
res6 = modles.Book.objects.prefetch_related('author')
for r inb res6:
print(r.author.name)
面试经常问的问题1:only与defer的区别
面试经常问的问题2:select_related与prefetch_related区别
select_related内部自动连表,连表的时候比较消耗资源,但走数据库的次数少
prefetch_related内部不做连表,多次查询的时候比较消耗资源,但刚给用户的感觉和连表操作一样
聚合与分组查询,F与Q查询的更多相关文章
- Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)
Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...
- Django 聚合查询 分组查询 F与Q查询
一.聚合查询 需要导入模块:from django.db.models import Max, Min, Sum, Count, Avg 关键语法:aggregate(聚合结果别名 = 聚合函数(参数 ...
- Django模型系统——ORM中跨表、聚合、分组、F、Q
核心知识点: 1.明白表之间的关系 2.根据关联字段确定正反向,选择一种方式 在Django的ORM种,查询既可以通过查询的方向分为正向查询和反向查询,也可以通过不同的对象分为对象查询和Queryse ...
- Django orm进阶查询(聚合、分组、F查询、Q查询)、常见字段、查询优化及事务操作
Django orm进阶查询(聚合.分组.F查询.Q查询).常见字段.查询优化及事务操作 聚合查询 记住用到关键字aggregate然后还有几个常用的聚合函数就好了 from django.db.mo ...
- Django 聚合分组F与Q查询及choices
一.聚合查询 需要导入模块:from django.db.models import Max, Min, Sum, Count, Avg 关键语法:aggregate(聚合结果别名 = 聚合函数(参数 ...
- django----聚合查询 分组 F与Q查询 字段 及其 参数
目录 一.orm补充查询 聚合查询 1-1 分组查询 1-2 F与Q查询 1-3 二. 字段及其参数 常用字段 AutoField IntegerField CharField DateField D ...
- Django中多表的增删改查操作及聚合查询、F、Q查询
一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表 ...
- django基础之day05,F与Q查询,Q查询的高级用法
#F与Q查询 #*************************** F 查询 ******************** # F 查询数据库中的其他字段!!! #1.查询库存数大于卖出数的书籍 fr ...
- F与Q查询 事务 choices参数
F与Q查询 F查询 当我们需要将两个字段对应的数据进行比较时就需要用到F查询. select * from book where sold > stock 1.例如需要将售出部分数据和库存数据进 ...
- django F与Q查询 事务 only与defer
F与Q 查询 class Product(models.Model): name = models.CharField(max_length=32) #都是类实例化出来的对象 price = mode ...
随机推荐
- Noip模拟81 2021.10.20
T1 语言 比较简单的题,然后就瞎写了,所以考场上就我一个写了线段树的,所以我的常数.... 所以就枚举动词的位置,找前面后面有没有出现$4$即可 1 #include<bits/stdc++. ...
- [HNOI2009]双递增序列(洛谷P4728)+小烈送菜(内部训练题)——奇妙的dp
博主学习本题的经过嘤嘤嘤: 7.22 : 听学长讲(一知半解)--自己推(推不出来)--网上看题解--以为自己会了(网上题解是错的)--发现错误以后又自己推(没推出来)--给学长发邮件--得到正确解法 ...
- HDMI之TMDS通道
HDMI标准继续沿用了和DVI相同的,由Silicon Image公司发明的TMDS(Time Minimized Differential Signal)最小化传输差分信号传输技术.TMDS是一种微 ...
- 《基于SD-SEIR模型的实验室人员不安全行为传播研究》
My Focus:基于SD-SEIR模型的实验室人员不安全行为的传播; 建模与实验仿真 Title: Study on Porpagation of Unsafe Bhavior of Laborat ...
- 助你上手Vue3全家桶之Vue3教程
目录 前言 1,setup 1.1,返回值 1.2,注意点 1.3,语法 1.4,setup的参数 2,ref 创建响应式数据 3,reactive 创建响应式数据 4,computed 计算属性 5 ...
- linux exit 和 _exit的区别
今天仔细看了一下exit和_exit这两个函数的区别,实际上exit也是调用了_exit退出函数的,只不过在调用_exit之前,exit还进行了一些多余的工作,也正是因为这样,相比起来exit就没有那 ...
- Python SyntaxError: Missing parentheses in call to 'print'
下面的代码 print "hello world" 会出现下面的错误 SyntaxError: Missing parentheses in call to 'print' 因为写 ...
- 2021CCPC华为云挑战赛 部分题题解
CDN流量调度问题 题看了没多久就看出来是\(DP\)的题,然后就设了状态\(f[i][j]\)表示到前\(i\)个点时已经用了\(j\)个节点的最小总代价,结果发现转移时\(O(nm^2)\),但这 ...
- swagger3.0(springboot)消除basic-error-controller
1.新建springboot项目,可以通过https://start.spring.io/快速生成springboot项目. 2.引入jar依赖: <dependency> <gro ...
- Kioskcached(2) 之 使用tcmalloc 替换 ptmalloc
前言 我在 Kioskcached(1)之 Memcached & Redis & Kioskcached 性能测试对比 中找到的一个问题是 malloc,对于一个内存型数据库,很容易 ...