alter table 加多个字段_Django(聚合、分组、FQ、Django事务、ORM字段、查询优化)...

cb534e62b0b3e112e640b08886a6a613.png
https://www.zhihu.com/video/1250912499274592256

今日考题

"""

答案

1.必知必会N条都有哪些,每个都是干啥使的


all() 查所有
filter()  查询带条件的
get()  查询带条件的,但是条件不成立会报错,所以不经常用
values()  获取指定的字段的数据,返回一个queryset对象,列表套字典
values_list()   获取指定的字段的数据,queryset,列表套元组
count()   查询统计出来的数据个数
first()   
last()
exclude()  除...之外
order_by   排序  默认升序  参数前面加负号是降序
reverse    反转,必须在排序之后才可以使用
distinct   去重(要去除主键)
exists()  判断是否有值,返回t/f


2.简述神奇的双下划线查询都有哪些方法,作用是什么


__gt  大于
__lt  小于
__gte   大于等于
__lte   小于等于
__in    在不在多个数据之内  便是或关系
__range  在不在多个数据之内   是包括报喜
__month  查询月份
__year   查询年份
__contains   模糊查询
__icontains  忽略大小写的模糊查询


3.针对多对多外键字段的增删改查方法有哪些,各有什么特点?


add 
remove
    :上述方法括号里面放数字或者对象都可以,都可以放多个
set:括号里面放可迭代对象eg:列表  可以放对象也可以放数字,也可以放一个,但必须放可迭代对象
clear:括号内无需传值,直接清空所有


4.什么是正反向的概念,及查询口诀,你能否总结一下正反向查询不同情况下点击不同字段的规律


正向:主键在自身,要查外表
反向:主键不在自身,要查主键在的表
正向查询按外键字段,反向查询按表名小写
正向在values里面做文章 
反正在filter里面做文章

内容回顾

  • 单表的增删改查
# 增
1.create()
2.对象.save()

# 查
1.all()				查所有
2.filter()		筛选条件,括号内多个参数之间逗号隔开并且默认是and关系
3.get()				筛选条件,条件不存在直接报错 所以不推荐使用

# 改
1.update() 		queryset对象帮你封装的批量更新
2.对象.save()

# 删
1.delete()		queryset对象帮你封装的批量删除
2.对象.delete()		
"""
在实际的项目中 数据是不可能真正删除的 一般情况下都用一个字段来标记是否删除
"""
  • 测试环境准备
# 你如果只想测试django某一个py文件(大部分情况下就是models.py)

# 在应用下的tests.py或者自己新建一个任意名称py文件(tests.py)
"""
1.去manage.py拷贝前四行

2.自己书写两行
	import django
	django.setup()
"""
  • 如何查看orm内部的sql语句
# 1.queryset对象可以直接点query查看
	queryset对象.query

# 2.配置文件配置日志相关代码即可(不要记 直接拷贝使用即可)
	参考笔记或者博客自己保存好
	
  • 必知必会N多条
# 1.all()

# 2.filter()
	我们在利用数据的主键字段筛选数据的时候,可以不考虑主键字段叫什么,直接使用pk代替

# 3.get()

# 4.values()
	获取指定字段对应的数据 返回的结果是一个queryset对象(列表套字典的形式)

# 5.values_list()
	获取指定字段对应的数据 返回的结果是一个queryset对象(列表套元祖的形式)

# 6.count()
	统计查询出来的数据个数
  
# 7.first()
	
# 8.last()

# 9.order_by()
	默认是升序,你可以在字段前面加一个负改为降序

# 10.reverse()
	前面必须是已经排讯过了 才能生效

# 11.exclude()
	排除...在外
 
# 12.distinct()
	去重(主键一定不要忘了)

# 13.exists()
	判断数据集是否有值 返回布尔值
  • 神奇的双下划线查询
# 价格大于 小于 大于等于 小于等于
price__gt
price__lt
price__gte
price__lte

# 成员查询
price__in

# 范围查询
price__range

# 模糊查询
title__contains		默认是区分大小写的
title__icontains	忽略大小写

# 只按照年份或者月份或者...
create_time__year
craete_time__month
  • 外键字段的增删改查
# 一对多
publish_id = 1
punlish = publish_obj

# 多对多
add
remove
	上述两个方法括号内即可以传数字也可以传对象并且都支持多个
set
	括号内必须传一个可迭代对象 可迭代对象里面的元素可以数字也可以对象并且都支持多个
clear
	括号内无需给任何参数,直接清空对应的关系数据
  • 多表查询
# 正反向的概念
	正向
  	外键字段就在我手中
  反向
  	外键字段不再我手中
# 小口诀
	正向查询按外键字段
  反向查询按表名小写
  								_set
    							.all()
# 温馨提示
	书写orm语句跟书写sql语句一样,不要试图一次性写完,可以分步书写
  
"""
多表操作
	1.子查询
		
	2.联表操作
		inner join
		left join
		right join
		union

Django orm中
	1.基于对象的跨表查询
		子查询
			1.先拿到一个数据对象
			2.对象点点点 
	
	2.基于双下划线的跨表查询
		联表操作
"""
1.基于对象的跨表查询
  book_obj.publish
  book_obj.authors.all()
  author_obj.author_detail
  
  publish_obj.book_set  # App01.Book.None
  publish_obj.book_set.all()
  author_obj.book_set.all()
  author_detail.author

2.基于双下划线的跨表查询
  models.Book.objects.filter(pk=1).values('title','publish__name')
  models.Publish.objects.filter(book__id=1).values('book__title','name')
  
  # 利用双下划线的跨表查询可以帮助你跨N多张表,只要有外键字段
  models.Book.objects.filter(pk=1).values('authors__author_detail__phone')
  

# 图书管理系统 图书的增删改查

内容概要

  • 聚合查询(聚合函数的使用)aggregate

max、min、sum、count、avg

  • 分组查询(group by的使用)annotate
  • F与Q查询
  • django中如何开启事务
  • orm中常用字段及参数
  • 数据库查询优化(only与defer、select_related与prefetch_related)
  • 图书管理系统讲解

今日内容详细

聚合查询

只要是跟数据库相关的模块 
   

分组查询

# 分组查询  annotate
    

F与Q查询

# F查询
    

django中如何开启事务

"""

orm中常用字段及参数

AutoField
    

数据库查询优化

only与defer  

图书管理系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值