本章主题
关键词
排序
order_by
:可以指定根据这个表中的某个字段进⾏排序,如果在前⾯加了⼀ 个-,代表的是降序排序。- 在模型定义的时候指定默认排序:有些时候,不想每次在查询的时候都指定排 序的⽅式,可以在定义模型的时候就指定排序的⽅式。
- 在模型定义中,添加以下代码
__mapper_args__ = {
"order_by": title
}
- 即可让⽂章使⽤标题来进⾏排序。
- 正向排序和反向排序:默认情况是从⼩到⼤,从前到后排序的,如果想要反向 排序,可以调⽤排序的字段的desc⽅法。
limit、offset和切片
- limit:可以限制每次查询的时候只查询⼏条数据。
- offset:可以限制查找数据的时候过滤掉前⾯多少条。
- 切⽚:可以对Query对象使⽤切⽚操作,来获取想要的数据。
查询⾼级
group_by
根据某个字段进⾏分组。⽐如想要根据性别进⾏分组,来统计每个分组分别有 多少⼈:
session.query(User.gender,func.count(User.id)).group_by(User.gende r).all()
having
having
是对查找结果进⼀步过滤。⽐如只想要看未成年⼈的数量,那么可以⾸ 先对年龄进⾏分组统计⼈数,然后再对分组进⾏having过滤。
result = session.query(User.age,func.count(User.id))