欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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()的常用方法

关于query.filter()的一些常用的方法

4. 高级查询

SQLAlchemy -高级查询

相关标签: python