首页 > 其他分享 >图书管理系统、聚合查询、分组查询、F与Q查询

图书管理系统、聚合查询、分组查询、F与Q查询

时间:2022-12-17 18:24:04浏览次数:50  
标签:Book 管理系统 models res price 查询 objects 分组

  • 图书管理系统讲解

  • 聚合查询

  • 分组查询

  • F与Q查询

图书管理系统讲解

1.表设计
	先考虑普通字段再考虑外键字段
	数据库迁移、测试数据录入
2.首页展示
3.书籍展示
4.书籍添加
5.书籍编辑
	后端如何获取用户想要编辑的数据、前端如何展示出待编辑的数据
6.书籍删除

聚合查询

MySQL聚合函数:
"""
    Max    统计最大值
    Min    统计最小值
    Sum    统计求和
    Count  统计计数
    Avg    统计平均值
"""
在ORM中支持单独使用聚合函数  使用关键字>>>:aggregate
操作方法:
   from django.db.models import Max,Min,Sum,Avg,Count
   res = models.Book.objects.aggregate(Max('price'))
    
# 查看价格最高、最低、价格之和、平均价格、书本个数

res = models.Book.objects.aggregate(书本个数=Count('pk'),
                                        Maxprice=Max('price'),
                                        最小价=Min('price'),
                                        allPrice=Sum('price'),
                                        平均价格=Avg('price')
                                        )
print(res)

image

分组查询

'''MySQL分组操作: group by 关键字: annotate''' 
ORM执行分组操作,报错的话就去修改sql_mode 移除only_full_group_by

from django.db.models import Max, Min, Sum, Avg, Count
# 统计每一本书的作者个数
res = models.Book.objects.annotate(author_num=Count('authors__pk')).values('title', 'author_num')
print(res)

image

# 统计出每个出版社卖的最便宜的书的价格
res = models.Publish.objects.annotate(min_price=Min('book__price')).values('name', 'min_price')
print(res)

image

# 统计不止一个作者的图书
# 1.先统计每本书的作者个数
res = models.Book.objects.annotate(author_num=Count('authors__pk')).values('author_num')
# 2.筛选出作者个数大于1的数据
res = models.Book.objects.annotate(author_num=Count('authors__pk')).filter(author_num__gt=1).values('title','author_num')
print(res)

image

# 查询每个作者出的书的总价格
res = models.Author.objects.annotate(总价=Sum('book__price'), count_book=Count('book__pk')).values('name', '总价','count_book')
print(res)

image

"""
models.表名.objects.annotate                      按照表分组
models.表名.objects.values('字段名').annotate()    按照values括号内指定的字段分组
"""
# 查询每个出版社出版了几本书
res = models.Book.objects.values('publish_id').annotate(count_pk=Count('pk')).values('publish_id', 'count_pk')
print(res)

image

新增字段

image

image

F与Q查询

  • F查询
'''当查询条件不是明确的 也需要从数据库中获取 就需要使用F查询'''

# 1.查询库存数大于卖出数的书籍
from django.db.models import F
res = models.Book.objects.filter(kucun__gt=F('maichu'))
print(res)

image

# 2.将所有书的价格涨1600
models.Book.objects.update(price=F('price') + 1600)

image

# 3.将所有书的名称后面追加爆款
from django.db.models.functions import Concat
from django.db.models import Value
models.Book.objects.update(title=Concat(F('title'), Value('新款')))

image

  • Q查询
# 查询主键是1或者价格大于2000的书籍
res = models.Book.objects.filter(pk=1,price__gt=2000) # 逗号默认是and关系
这里要使用到或的关系,因为filter括号内为and关系,并且不能修改,所以使用Q
from django.db.models import Q
'''使用Q对象,我们就可以做逻辑运算符'''
res = models.Book.objects.filter(Q(pk=1), Q(price__gt=2000))  # 逗号是and

res = models.Book.objects.filter(Q(pk=1) | Q(price__gt=2000))  # |是or

res = models.Book.objects.filter(~Q(pk=1) | Q(price__gt=2000))  # ~是not
print(res.query)

image

标签:Book,管理系统,models,res,price,查询,objects,分组
From: https://www.cnblogs.com/super-xz/p/16989306.html

相关文章

  • FAQ:说一说一条查询语句是如何执行的?
    一条SQL语句内部执行流程是怎样的?1select*fromuserwhereid=1;1.客户端发送SQL语句到服务器,先要通过连接器连接到数据库,在完成TCP握手之后,验证用户名和密码。......
  • 框架第七课---图书管理系统详解
    ..homePage.html页面代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title>{#<scriptsrc="jQuery3.6.js"></scrip......
  • 基于struts+hibernate的采购管理系统的分析与实现(论文+PPT+源码)
    基于struts+hibernate的采购管理系统的分析与实现摘要当今社会己进入信息社会时代,信息己经受到社会的广泛关注,被看作社会和科学技术发展的三大支柱(材料、能源、信息)之一。......
  • 基于JAVA的私人牙科诊所管理系统
    分类号_______________密级________________UDC_______________学号____毕业设计(论文)学生姓名学号所在院系专业班级导师姓名职称完成日期论文题目基于JAVA的私人......
  • KB0001.修改DoraCloud管理系统的IP地址
    KB0001.修改DoraCloud管理系统的IP地址DoraCloud管理系统是一个CentOSLinux的虚拟机。我们既可以通过DoraCloud后台管理系统修改它的IP地址,也可以通过CentOS命令修改它......
  • 复赛和排名(分组排名)
     问题1:按不同科目进行排名函数公式解决:=SUM(1*IF(B$2:B$25=B2,C$2:C$25>=C2))此公式不受BC两列顺序的影响问题2:排名前30%的可以参加复赛函数公式解决:=IF(SUM(......
  • 使用匿名类型存储LINQ查询结果
    匿名类型的特性:1.既支持简单类型也支持复杂类型。简单类型必须是一个非空初始值,复杂类型则是一个以new开头的初始化项;2.匿名类型的属性是只读的,没有属性设置器,它......
  • javaEE土地档案管理系统
    土地档案管理关系摘要研究土地档案管理关系即为实现一个土地档案管理系统。土地档案管理系统是将现有的历史纸质档案资料进行数字化加工处理,建成标准化的网络基础资料数据......
  • 户籍管理系统的设计与实现(论文+PPT+源码)
    户籍管理系统的设计与实现摘要当今社会人们生活质量越来越高,人们对生活品质的追求不断提升,对于孩子求学,变更住所等情况时有发生,因此对于户籍变动管理就显得十分重要,管理用......
  • 固定资产管理系统(论文+PPT+源码)
    固定资产管理系统摘要随着计算机信息技术的发展以及对资产、设备的管理科学化、合理化的高要求,利用计算机实现设备及资产的信息化管理已经显得非常重要。固定资产管理系统......