排序统计
限制和分页 (Limiting and Pagination)
python
# 限制返回数量
app_db = Models.session.query(Models.App).limit(5).all()
# 分页查询 (offset + limit)
page = 2
per_page = 10
app_db = Models.session.query(Models.App).offset(
(page-1)*per_page
).limit(per_page).all()
排序查询 (Ordering) 升序降序
python
# 升序排序
app_db = Models.session.query(Models.App).order_by(Models.App.name).all()
# 降序排序
app_db = Models.session.query(Models.App).order_by(Models.App.name.desc()).all()
# 多列排序
app_db = Models.session.query(Models.App).order_by(
Models.App.category,
Models.App.name.desc()
).all()
聚合函数 (Aggregate Functions)
python
from sqlalchemy import func
# 计数
count = Models.session.query(func.count(Models.App.id)).scalar()
# 分组统计
category_stats = Models.session.query(
Models.App.category,
func.count(Models.App.id).label('app_count')
).group_by(Models.App.category).all()
# 最大值/最小值/平均值
max_id = Models.session.query(func.max(Models.App.id)).scalar()
avg_rating = Models.session.query(func.avg(Models.App.rating)).scalar()