SQLAlchemy 使用计算列

SQLAlchemy use calculated column

我想要如下代码:

distance = (Robot.pose_x)**2 + (Robot.pose_y)**2
robot_filtered = session.query(Robot).filter(distance > 100).all()

但它给出了 TypeError: unsupported operand type(s) for ** or pow(): 'InstrumentedAttribute' and 'int'

我知道为什么会出错,但我想要这样的解决方案。

是否有更好的方法来过滤或排序 pow 计算?

使用 sqlalchemy.func 可能会完成这项工作,我从来没有这样做过,所以你必须测试确切的语法,但它应该是这样的:

distance = func.pow(Robot.pose_x, 2) + func.pow(Robot.pose_y, 2)