SQLAlchemy在PostgreSQL JSONB中过滤嵌套的JSON数据

9

我正在将嵌套的JSON存储为jsonb,但我不知道如何选择具有不确定值的嵌套JSON。

例如:

{
    "facebook": {
        "openid": "123456789",
        "access_token": "6EFD26B0A868E3BB387E78851E42943F"
    }
}

我知道 OpenID 的价值,但是 access_token 不确定。

我尝试了以下方法,但出现了错误。

cls.query.filter(User.auth["facebook"]["openid"].astext == openid).first()

8
dict = {"facebook": {"openid": "123456789"}} user = cls.query.filter(User.auth.contains(dict)).first()这段代码的作用是通过查询包含指定字典的 auth 字段,获取符合条件的第一个用户对象,并将其赋值给变量 user。其中,字典 {"facebook": {"openid": "123456789"}} 用于指定查询条件。 - undefined
JSONB运算符:http://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#sqlalchemy.dialects.postgresql.JSONB - undefined
1
该操作符不支持“like”过滤,它不区分大小写,并且不会搜索部分字符串 :( - undefined
1个回答

0
使用这种方法来过滤嵌套的jsonb列:
user = session.query(User) \
    .filter(text("CAST(auth->'facebook'->>'openid' AS TEXT) = :openid")) \
    .params(openid=openid) \
    .first()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接