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)
我想要如下代码:
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)