繁体   English   中英

SQLalchemy +Postgresql访问jsonb元素数组

[英]SQLalchemy +Postgresql accessing Array of jsonb elements

我有一个看起来像这样的查询。 query = db.query(status_cte.c.finding_status_history)当我检查.type时,finding_status_history 列的类型为数组。 它是一个jsonb对象数组,如果更容易的话,我可以轻松地将其更改为json 我还用它测试了这个json

[
    {
        "data": [
            {
                "status": "closed",
                "created_at": "2023-01-27T18:05:27.579817",
                "previous_status": "open"
            },
            {
                "status": "open",
                "created_at": "2023-01-27T18:05:28.694352",
                "previous_status": "closed"
            }
        ]
    },
    ...
]

我正在尝试访问嵌套在data中的第一个字典并访问status列。

我试图使用query = db.query(status_cte.c.finding_status_history[0])来获取它,但这会返回一个像这样的空字典列表。

[
    {},
    {},
    {},
    {},
    {},
    {},
    {}
]

我不确定为什么这不起作用,因为我的印象是我应该抓住第一个条目。 我假设我需要首先访问“数据”,但我也试过......

query = db.query(status_cte.c.finding_status_history.op('->>')('data')这给了我jsonb[] ->> unknown operator doesn't exist 。我试着输入 cast 数据到是 String 的那个,我得到同样的错误但是jsonb[] ->> String等等

此外,当循环遍历for item in query.all()时,我看到 [0] 导致(None,)而 [1] 导致

({
                "status": "closed",
                "created_at": "2023-01-27T18:05:27.579817",
                "previous_status": "open"
},)

作为元组...

秘密在于 [0] 不是第一个元素。 [1] 还注意到 [-1] 似乎没有给我最后一个元素,所以我还必须订购我聚合的 json 个对象。

暂无
暂无

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

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