You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLAlchemy报错:abs()无法处理BinaryExpression类型的原因问询

问题原因与解决方法

问题出在哪

你用了Python原生的abs()函数,但Chart.jupiter_lon - Chart.h5_lon返回的是SQLAlchemy的BinaryExpression对象——这是用来构建SQL表达式的中间结构,不是普通的Python数值,所以原生abs()无法处理它。

正确写法

要调用数据库的ABS函数,得用SQLAlchemy提供的func.abs(),步骤如下:

  1. 先导入func:
from sqlalchemy import func
  1. 修改查询语句:
db.session.query(Chart).filter(func.abs(Chart.jupiter_lon - Chart.h5_lon) < 0.88).all()

这样func.abs()会生成SQL中的ABS()函数调用,把差值的绝对值计算逻辑交给数据库执行,就能正确匹配你原本的SQL语句逻辑了。

内容的提问来源于stack exchange,提问作者pepazdepa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:20:37