繁体   English   中英

如果 JSON 字段包含值,则 SQLAlchemy 过滤

[英]SQLAlchemy filter if JSON field contains a value

我有一张由这个 class 代表的表格

from sqlalchemy import JSON


class Mytable(Base):
    myfield = JSON   

myfield列将包含 JSON arrays。

我想 select 只有myfield列包含特定值foo的行,我该怎么做? (我在 Mysql 8.0 但我认为解决方案可能对所有数据库类型都相同)

到目前为止我尝试过的

  • 使用in操作
session.query(Mytable).filter("foo" in Mytable.myfield)

这将返回错误NotImplementedError: Operator 'contains' is not supported on this expression

我通过重新运行我认为不起作用的示例找到了答案,并更正了一个错字:)

通过sqlalchemy.func使用JSON_CONTAINS方法适用于我的情况。

from sqlalchemy import func

session.query(MyTable).filter(func.json_contains(Mytable.myfield, '"foo"', "$"))

(注意foo周围的双引号)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM