Python中 SQLAlchemy模块 高级查询
程序员文章站
2022-03-11 19:39:10
...
@创建日期:2020.03.31
@修改日期:2020.03.31
1. 字段分组、统计和排序
- 在调用func.count()函数时,count选择没有Null的字段,以选择id为最好,其次为常量值(func.count(1))。
- 如果选择func.count(DataTable.con_author),当con_author为NULL的时候,统计结果为0。是不符合要求的。
# 按照作者分类统计
def author_stat():
# value_name_list = db.session.query(DataTable.con_author, func.count(DataTable.con_author)). \
value_name_list = db.session.query(DataTable.con_author, func.count(1)). \
group_by(DataTable.con_author).\
order_by(func.count(1).desc()).all()
print("In author_stat() value_name_list: %s" % value_name_list)
return value_name_list
2. 按DateTime字段的年或月进行group_by查询
查询2016年5月每天的数据。
参考
end = datetime.now()
start = datetime.now() + timedelta(days=-int(time_section))
between = User.create_date.between(start, end) # 注意start和end
counts = session.query(day, func.count('*')).filter(month_field, year_field, between).group_by('day').all()
# from sqlalchemy import extract
# session.query(extract('day', User.create_date).label('day'), func.count('*')).filter(extract('month', User.create_date) == 5, extract('year', User.create_date) == 2016).group_by('day').all()
3. query.filter()的常用方法
4. 高级查询
下一篇: 弥足珍贵--大家的测试反馈和技术支持
推荐阅读