排序
1.order_by:可以指定根据这个表中的某个字段进行排序,如果在前面加了一个-,代表的是降序排序。
2.在模型定义的时候指定默认排序:有些时候,不想每次在查询的时候都指定排序的方式,可以在定义模型的时候就指定排序的方式。
- 在模型定义中,添加以下代码
__mapper_args__ = {
"order_by": title
}
- 即可让文章使用标题来进行排序。
3.正向排序和反向排序:默认情况是从小到大,从前到后排序的,如果想要反向排序,可以调用排序的字段的desc方法。
limit、offset和切片
- limit:可以限制每次查询的时候只查询几条数据。
- offset:可以限制查找数据的时候过滤掉前面多少条。
- 切片:可以对Query对象使用切片操作,来获取想要的数据。
查询
group_by
根据某个字段进行分组。比如想要根据性别进行分组,来统计每个分组分别有多少人
session.query(User.gender,func.count(User.id)).group_by(User.gender).all()
having
having是对查找结果进一步过滤。比如只想要看未成年人的数量,那么可以首先对年龄进行分组统计人数,然后再对分组进行having过滤。
result = session.query(User.age,func.count(User.id)<