python SQLAlchemy中子查询subquery的使用

Posted 菜小鱼~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python SQLAlchemy中子查询subquery的使用相关的知识,希望对你有一定的参考价值。

基本配置:

https://www.cnblogs.com/whycai/p/11963443.html

 

原始sql:

将表中数据按照name分组,其他字段展示最新的数据,于是,先要排序后,再进行分组

1 select a.name,count(*),a.datetime from 
2 (select * from TableName where 1=1 and datetime >= "2020-1-9 11:00:00" 
3 and datetime <= "2020-1-9 20:00:00" ORDER BY id DESC LIMIT 100000) a 
4 GROUP BY a.name ;

将sql拆解:

1 1.
2 select * from TableName where 1=1 and datetime >= "2020-1-9 11:00:00" 
3 and datetime <= "2020-1-9 20:00:00" ORDER BY id DESC LIMIT 100000
4 
5 2.
6 select a.name,count(*),a.datetime from 
7 (1中sql) a 
8 GROUP BY a.name ;

 

 

SQLAlchemy的写法:

1 sql_text = \' 1=1 and datetime >= "2020-1-9 11:00:00" and datetime <= "2020-1-9 20:00:00"\'
2 
3 #相当于 sql拆解中的1
4 resSub = db.session.query(TableName).filter(text(sql_text)).order_by(TableName.id.desc()).limit(10000).subquery()
5 
6 #相当于 sql拆解中的2
7 res = db.session.query(resSub.c.name, func.count(resSub.c.name), resSub.c.datetime).group_by(resSub.c.name).all()

以上是关于python SQLAlchemy中子查询subquery的使用的主要内容,如果未能解决你的问题,请参考以下文章

Python 之 sqlalchemy查询数据

python SQLAlchemy的简单配置和查询

Python 之 sqlalchemy 外键正反向关联查询

Python - 使用 sqlalchemy 的 Postgres 查询返回“空数据框”

Python3-sqlalchemy-orm 查询修改

python+ sqlalchemy实现orm创建表和查询操作