python - sqlalchemy 按 mysql python 排序
问题描述
我正在尝试运行以下查询:
SELECT order, user, email, date
RANK() OVER (PARTITION BY order ORDER BY date DESC) as ranked
FROM orders
蟒蛇代码:
engine.execute(table('orders'), func.rank().over(partition_by='order', order_by='date').desc().label('ranked'))
错误:
sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: <sqlalchemy.sql.selectable.TableClause at 0x2c528354340; tracking>
解决方案
from sqlalchemy import select, func
from sqlalchemy.sql import table, literal_column, column
query = select(
[
column('order'),
# ...other columns. or you can select all: column('*')
literal_column(
str(func.rank().over(partition_by='order', order_by='date DESC'))
).label('ranked'),
# or:
# literal_column('RANK() OVER (PARTITION BY order ORDER BY date DESC)').label('ranked')
]
).select_from(table('orders'))
print(query)
推荐阅读
- python - 熊猫中的时间增量矩阵(成对)
- python - 如何防止循环重复我的随机值?
- sql - SQL Server中如何通过行比较计算一致性程度?
- entity-framework - Asp.net MVC 实体框架路径不起作用 - WebAPI 控制器类
- postgresql - 在 Postgres 或其他关系数据库服务器中将插入包装到事务中有什么好处?
- java - 如何从事件处理程序向 Java FX 主线程发出信号?
- laravel - 哪里没工作,在有很多关系
- node.js - NestJS 将下载的文件直接传递给客户端
- sql - oracle如何在过程调用中传入数组
- assembly - 内存对齐和访问粒度在汇编中如何工作?