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

SQLAlchemy中in_()过滤JSON字段features['items']返回0的问题求助

问题原因

你遇到的问题是因为SQLAlchemy对JSON类型字段的in_()方法处理逻辑和普通字段不同。当直接对Data.features['items']调用in_(["a","b"])时,生成的SQL语句并不是检查JSON字段的文本值是否在目标数组中,而是错误地将JSON元素与整个数组进行匹配,导致没有符合条件的结果。而单独查询单个值时,是简单的等于比较,所以能正常返回结果。

解决方法

有两种可行的解决方式:

  • 方式一:将JSON字段转为文本类型后使用in_()
    通过astext方法把JSON元素转换为字符串类型,再调用in_(),这样生成的SQL会正确生成IN子句:

    data.filter(Data.features['items'].astext.in_(["a","b"]))
    
  • 方式二:用or_拼接多个等于条件
    直接把单个值的过滤条件用or_组合起来,效果和预期一致:

    from sqlalchemy import or_
    data.filter(or_(Data.features['items'] == 'a', Data.features['items'] == 'b'))
    

这两种方式都能正确筛选出items值为a或b的4条数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:39:59