[英]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.