sqlalchemy常用api续(常用的条件查询)

上一篇文章介绍了sqlalchemy的基础CRUD,现在介绍一些常用的条件查询以及函数等。

带有条件的复杂查询

#指定查询字段 使用filter_by或filter
my_obj = session.query(video).filter_by(id=1).first()
#查询某列
item_list = session.query(video.title).all()
#对结果进行排序
item_list = session.query(video).order_by(video.id.desc()).all() # desc()表示倒序

设置查询数量及偏移量

#查询三个元素
session.query(video).filter(video.title!='hello').limit(3).all()

#从第三个元素查询
session.query(video).filter(video.title!='hello').offset(3).all()

#上述两者可结合使用,最常见的例子便是分页操作
session.query(video).filter(video.title!='hello').limit(10).offset(0).all()

#还可用切片的形式实现上述操作   切片同python左开右闭
session.query(video).filter(video.title!='hello').slice(1,3).all()
session.query(video).filter(video.title!='hello').all()[1:3]

#条件查询 或 和 like
from sqlalchemy import or_
session.query(video).filter(or_(video.title.like(r'%hello%'),video.title.like(r'%hi%'))).all()

#分组函数 
session.query(video.category).group_by(video.category).all()

#聚合函数
from sqlalchemy import func
session.query(video.category).group_by(video.category).order_by(desc(func.count(video.category))).all()

更多函数可参考sqlalchemy官网,基础的crud参考上一篇文章,传送门