Python模型中的一些常用查询操作
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,本篇内容介绍了"Python模型中的一些常用查询操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目
千家信息网最后更新 2024年11月25日Python模型中的一些常用查询操作
本篇内容介绍了"Python模型中的一些常用查询操作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
目录
模型中的一些查询操作:
1.聚合查询:aggregate()是QuerySet 的一个终止子句
2.Q查询: 如果你需要执行更复杂的查询(例如OR语句)
3.F查询: (查询的是一整列数据!)
4.分组查询
4.1一对多关系
4.2多对多关系
模型中的一些查询操作:
1.聚合查询:aggregate()是QuerySet 的一个终止子句
它返回一个包含一些键值对的字典
from movie.models import Userfrom django.db.models import Count, Avg, Max, Min, Sumdef test_info(request): #聚合查询 #求User中的平均年龄 默认返回的数据格式是一个字典,其中键名为age__avg,值为指定字段的平均值。 rs = User.objects.all().aggregate(Avg("age")) #指定一个名字 可以通过如下指定字典的键名。 rs = User.objects.all().aggregate(age=Avg("age")) #平均,最大,最小,求和 rs = User.objects.all().aggregate(Avg("age"),Max("age"),Min("age"),Sum("age"))
默认情况下(求User中的平均年龄):
指定键名(求User中的平均年龄):
2.Q查询: 如果你需要执行更复杂的查询(例如OR语句)
你可以使用Q对象。Q对象可以使用&(and)、|(or)操作符;使用~(not)操作符在Q对象前表示取反
# 查询出User表中name为小明或者小红的rs = User.objects.filter(Q(name='小明')|Q(name='小红'))# 查询Student表中,name为小明,年龄不等于18的rs = User.objects.filter(Q(name='小明')&~Q(age=18))
3.F查询: (查询的是一整列数据!)
针对两个字段的值的比较
# 学院id小于学生的学号的rs = Student.objects.filter(department_id__gt=F('s_id))# 给User表中的所有人加1岁rs = User.objects.all().update(age=F('age')+1)
4.分组查询
为调用的QuerySet中每一个对象都生成一个独立的统计值
4.1一对多关系
import Student,Coursefrom django.db.models import Count# 拿出学生表中需要分组的字段rs = Student.objects.values() # 以字典形式展示所有查询到的数据的全部信息"""输出示例:"""rs = Student.objects.values('department') # 以字典形式展示所有查询到的数据的department字段"""输出示例: """rs = Student.objects.values('s_name','department') # 以字典形式展示所有查询到的数据的s_name和department字段"""输出示例: """# 对这个department字段进行分组rs = Student.objects.values('department').annotate(count=Count('department'))"""输出示例: """# 对分组后的内容按需要的字段输出rs = Student.objects.values('department').annotate(count=Count('department')).values('department', 'count')"""输出示例: """
4.2多对多关系
# 多对多关系# 以课程作为分组条件查每个课程的学生数量 拿到所有的课程的数据rs = Course.objects.all()# 关系表中,同一个课程,学生学号出现的次数,就是报名了此课程的学生的个数rs = Course.objects.all().annotate(count=Count('students'))rs = Course.objects.all().annotate(count=Count('students')).values('c_name', 'count')# 以学生作为分组条件来查每个学生报名了的课程数量 拿到所有的学生的数据rs = Student.objects.all()# 关系表中,同一个学生,课程出现的次数,就是这个学生报名的课程的数量rs = Student.objects.all().annotate(count=Count('course'))rs = Student.objects.all().annotate(count=Count('course')).value('s_name', 'count')
"Python模型中的一些常用查询操作"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
查询
学生
数据
课程
字段
分组
输出
字典
示例
模型
对象
年龄
小明
内容
形式
数量
常用
常用查询
复杂
子句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州网络安全优秀柚米
网络安全数据分析模型
网络安全要怎么学
渝中区一站式网络技术包括什么
g6管理服务器如何启动
C语言cai软件开发
海安商城软件开发多少钱
世界贸易组织数据库
ecnu数据库
软件开发所有权合同
江苏各地网络安全宣传周活动
认证网络安全知识
创新科技成果亮相互联网大会
ns2服务器怎么找
重庆销售软件开发排名
网络安全责任2019
软件开发项目技术服务费
db2查看数据库信息
ionic 接收数据库
纬地数据库文件 超高1
开封网络技术服务
我的世界空岛生存服务器
云上数据库安全
阿里现在用的什么数据库
什么是物联网的数据库
服务器安全狗百度百科
卡巴斯基无法连接管理服务器
如何看数据库中的表和字段
直播服务器设备的组成
ios的明日方舟是什么服务器