python - django (查询、聚合、分组)
#
"""
---- 正向查询按字段,反向查询按表名
一: 一对多
正向查询:(字段对象.关联表.查询字段)
x_obj = models.Book.objects.filter(xxx).first()
x_obj.publish.email
反向查询:(字段对象.要查询的表名小写_set.all())
x_obj = models.Publish.objects.filter(xxx).first()
for i in x_obj.book_set.all():
print(i)
二: 多对对
正向查询:(字段对象.关联表.all()) 查询所有
x_obj = modles.Bookobjects.filter(xxx).first()
for author in x_obj.authors.all():
print(author.name, author.age) 反向查询:(字段对象.关联表_set.all())
x_obj = modles.Author.objects.filter(xxx).first()
for book in x_obj_set.all():
print(book.title) 三:一对一
正向查询:(字段对象.关联表名.关联表名字段)
x_obj = modles.Author.objects.filter(xxx).first()
x_obj = authorDetail.telephone 反向查询:()
x_obj = modles.AuthorDetail.objects.filter(xxx).first()
x_obj.author.name 四:聚合/分组 聚合:
from django.db.models import Sum,Count,Avg
ret = models.Book.objects.all().aggregate(price=Sum('price')) 分组:
1. queryset对象.annotate()
2. annotate进行分组统计,按前面select 的字段进行 group by
3. annotate() 返回值依然是 queryset对象,增加了分组统计后的键值对 modles.dep.objects.values("name").annotate(c=Count('emp__name')).values('name','c')
# 查询 dep 表, 按name 分组 , 将 emp下的name字段计数,返回结果是 name字段 和 计数结果 modles.book.objects.values('id').annotate(c=Content( ))
"""#
直接执行原生的SQL语句,类似pymysql的用法
# from django.db import connection
# cursor = connection.cursor() # 获取光标,等待执行SQL语句
# cursor.execute("""SELECT * from person where id = %s""", [1])
# row = cursor.fetchone()
# print(row)
python - django (查询、聚合、分组)的更多相关文章
- day056-58 django多表增加和查询基于对象和基于双下划线的多表查询聚合 分组查询 自定义标签过滤器 外部调用django环境 事务和锁
一.多表的创建 from django.db import models # Create your models here. class Author(models.Model): id = mod ...
- Django 多表查询练习题 Q查询 F查询 聚合 分组
-------------------------------------------------自己偷的懒,或许用加倍时间也补不回来,珍惜现在的拥有的时光,把我现在! 上节回顾 基于对象的跨表查询( ...
- python django查询12306火车票
逢年过节,想坐个高铁票,都得上12306去买票,但用过的都会发现,它会把临近站点的也筛出来了.但有时我们压根就不会考虑买到临近站点的. 另一方面,在购票高峰期,有可能你要的出发站到目的站都没有票了,这 ...
- Python - Django - ORM 聚合查询和分组查询
models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(p ...
- Django值聚合,分组,事物,cookie,session
1,聚合(aggregate):是queryset的一个 终止语句,它返回一个包含键值对的字典,键是的名称是聚合值的标识符,值是计算出来的聚合值,键的名称是按照字段和聚合函数自动生成出来的.用到的内置 ...
- SQL你必须知道的-查询聚合分组排序
use MySchoolTwo -- 简单查询 select * from Student -- 话说这种查询的效率要比 * 要高级点 select sId , sName , ...
- python django查询一周,一月,一年时间
首先是当前时间的确定,对于年月日,orm模型都有对应的方法直接查询,周是没有方法直接查询的,我是没有找到这个方法,只能间接的查询 1 2 3 now_time = datetime.datetime. ...
- python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)
12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...
- python全栈开发day68-ORM操作:一般操作、ForeignKey操作、ManyToManyField、聚合查询和分组查询、F查询和Q查询等
ORM操作 https://www.cnblogs.com/maple-shaw/articles/9403501.html 一.一般操作 1. 必知必会13条 <1> all(): 查询 ...
随机推荐
- git下载仓库的部分目录
有这样的需求,比如某个仓库里包含可执行文件[编译后的文件]或jar包之类的,他们太大我不需要而且我自己可以编译或导入: 或者是某个仓库是自己专门用来放demos的,里面有很多的demo项目,我可能只想 ...
- Jackson使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/m0_37076574/article/d ...
- 作为注册中心Eureka比Zookeeper好在哪里?
作为注册中心Eureka比Zookeeper好在哪里? 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性),A(可用性)和P(分区容错性).由于分区容错性P在是分布式系统中必须要保证 ...
- LeetCode 643. 子数组最大平均数 I(Maximum Average Subarray I)
643. 子数组最大平均数 I 643. Maximum Average Subarray I 题目描述 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数. LeetCo ...
- Java静态分派和动态分派
前言 动态分派和静态分派机制是Java多态实现的原理.本文将针对这两种机制进行浅析. 静态分派 静态分派机制最典型的代码示例如下 void test() { Father father = new S ...
- python 之 面向对象基础(继承与派生,经典类与新式类)
7.2 继承与派生 7.21继承 1.什么是继承? 继承是一种新建类的的方式,在python中支持一个子类继承多个父类.新建的类称为子类或者派生类,父类又可以称为基类或者超类,子类会”遗传“父类的属性 ...
- Eclipse设置每行的最大字符数
Eclipse默认宽度是 120 个字符.如下图所示(提示:格式化快捷键Ctrl + Shift + F): 设置步骤如下: 菜单栏倒数第二项,选择Window 下拉栏最后一项,选择Preferenc ...
- 怎样在python中写多行语句
一般来说, 一行就是一条语句, 但有时语句过长不利于阅读, 一般会写成多行的形式, 这时需要在换行时使用反斜杠: \ name = "Lilei" age = 23 gender ...
- mysql允许root远程登录
MySQL 默认不允许远程以root进行登陆 进入mysql后 mysql>select host, user from user; +--------------------+------+ ...
- C# mailKit 发邮件 简单代码
public static async Task<bool> SendMailAsync22(string Name, string receive, string sender, str ...