Dea*_*nLa 6 python postgresql sqlalchemy
我有一张用户记录表,希望在满足某些条件时查看平均值。条件列是布尔值。在Postgresql中,我可以轻松地进行转换:
select id, avg(cond::INT) from table group by id;
Run Code Online (Sandbox Code Playgroud)
但是在SQLAlchemy中我找不到任何与之等效的东西::INT
。
我该如何处理类型转换?我有
orm_query(Table.id, func.avg(Table.cond))
Run Code Online (Sandbox Code Playgroud)
当然,这会返回错误。
您可以使用cast
函数将布尔值转换为整数:
from sqlalchemy.sql.expression import cast
import sqlalchemy
orm_query(Table.id, func.avg(cast(Table.cond, sqlalchemy.Integer)))
Run Code Online (Sandbox Code Playgroud)
该<expr>::<type>
是PostgreSQL的特定语法,CAST(<expr> AS <type>)
标准的SQL等同。在SQLAlchemy中,您可以通过多种方式生成类型转换表达式。在这种情况下,您可以简单地:
orm_query(Table.id, func.avg(Table.cond.cast(Integer)))
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用cast()
构造。
归档时间: |
|
查看次数: |
4669 次 |
最近记录: |