代码之家  ›  专栏  ›  技术社区  ›  Ryan King

sqlalchemy更改查询中的数据类型

  •  0
  • Ryan King  · 技术社区  · 5 年前

    我有一个用户记录表,我希望看到一些条件满足时的平均值。条件列是布尔值。 在Postgresql中,我可以很容易地将其转换为:

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

    但是在炼金术中我找不到任何与 ::INT .
    如何处理类型转换? 我有

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

    当然,这会返回一个错误。

    0 回复  |  直到 7 年前
        1
  •  5
  •   Ilja Everilä    7 年前

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

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

    另一种选择是使用 cast() 建造。

        2
  •  3
  •   matino    7 年前

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

    from sqlalchemy.sql.expression import cast
    import sqlalchemy
    
    orm_query(Table.id, func.avg(cast(Table.cond, sqlalchemy.Integer)))