SQLAlchemy将布尔列转换为整数

18

我有一张用户记录表,我想在满足某个条件时查看平均值。该条件列是布尔型的。 在Postgresql中,我可以轻松地进行强制转换:

select id, avg(cond::INT) from table group by id;

但在SQLAlchemy中,我找不到任何等价于::INT的东西。
我该如何处理类型转换?

orm_query(Table.id, func.avg(Table.cond))

当然会返回错误。


1
sqlalchemy.sql.expression导入cast或者从sqlalchemy导入cast,你试过了吗?使用cast(Table.cond, sqlalchemy.Integer) - Anup Yadav
2个回答

26

<expr>::<type>Postgresql特定语法CAST(<expr> AS <type>)是标准的SQL等价语法。在SQLAlchemy中,你可以用多种方式生成类型转换表达式。在这种情况下,你可以简单地:

orm_query(Table.id, func.avg(Table.cond.cast(Integer)))

另一个选择是使用cast()结构。

11

你可以使用cast函数将布尔值转换为整数:

from sqlalchemy.sql.expression import cast
import sqlalchemy

orm_query(Table.id, func.avg(cast(Table.cond, sqlalchemy.Integer)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接