SQLAlchemy将boolean列转换为int

时间:2018-01-30 10:52:41

标签: python postgresql sqlalchemy

我有一个用户记录表,我希望看到满足某些条件时的平均值。 condition列是一个布尔值。 在Postgresql中,我可以轻松地进行转换:

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

但是在SQLAlchemy中我找不到与::INT等价的东西 我如何处理类型转换? 我有

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

当然会返回错误。

2 个答案:

答案 0 :(得分:3)

<expr>::<type>Postgresql specific syntaxCAST(<expr> AS <type>)是标准的SQL等价物。在SQLAlchemy中,您可以使用各种方式生成类型转换表达式。在这种情况下,您可以简单地:

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

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

答案 1 :(得分:2)

您可以使用cast功能将布尔值转换为整数:

from sqlalchemy.sql.expression import cast
import sqlalchemy

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