我有一张用户记录表,我想在满足某个条件时查看平均值。该条件列是布尔型的。 在Postgresql中,我可以轻松地进行强制转换:
select id, avg(cond::INT) from table group by id;
但在SQLAlchemy中,我找不到任何等价于::INT
的东西。
我该如何处理类型转换?
orm_query(Table.id, func.avg(Table.cond))
当然会返回错误。
我有一张用户记录表,我想在满足某个条件时查看平均值。该条件列是布尔型的。 在Postgresql中,我可以轻松地进行强制转换:
select id, avg(cond::INT) from table group by id;
但在SQLAlchemy中,我找不到任何等价于::INT
的东西。
我该如何处理类型转换?
orm_query(Table.id, func.avg(Table.cond))
当然会返回错误。
<expr>::<type>
是Postgresql特定语法,CAST(<expr> AS <type>)
是标准的SQL等价语法。在SQLAlchemy中,你可以用多种方式生成类型转换表达式。在这种情况下,你可以简单地:
orm_query(Table.id, func.avg(Table.cond.cast(Integer)))
cast()
结构。你可以使用cast
函数将布尔值转换为整数:
from sqlalchemy.sql.expression import cast
import sqlalchemy
orm_query(Table.id, func.avg(cast(Table.cond, sqlalchemy.Integer)))
sqlalchemy.sql.expression
导入cast
或者从sqlalchemy
导入cast
,你试过了吗?使用cast(Table.cond, sqlalchemy.Integer)
。 - Anup Yadav