gpt4 book ai didi

python - Postgres JSONB - 查询所有根键

转载 作者:行者123 更新时间:2023-12-05 02:42:38 25 4
gpt4 key购买 nike

PostgreSQL (13.2)

我有一个包含 2 列的表 - 时间戳和快照。快照包含一个 JSONB - 代表仓库状况的字典。数据结构是这样的

{
"key1": {...},
"key2": {...},
"key3": {...},
"key4": {...},
"key5": {...}
}

所以我需要在 json 中获取包含我要查找的数据的特定键。我还需要获取保存快照的行时间戳。我该如何查询?

附言。在 python 中,我可以使用像 dict.keys 这样的 smth,然后开始遍历所有键,我在这里需要类似的东西来搜索数据。

页数。也知道如何用 SQLAlchemy 实现它会很有趣

[数据库查看器的屏幕截图]

1

最佳答案

(jsonb_each()).* 从 jsonb 字段中选择所有键和值:

SELECT (JSONB_EACH(blocks)).*
FROM snapshots

然后我们需要通过嵌套键获取值:

SELECT key AS rack_num
, value ->> 'client_id' AS client_id
, value ->> 'timestamp' AS _TIMESTAMP
FROM (
SELECT (JSONB_EACH(blocks)).*
FROM snapshots
) AS t

最后,汇总结果:

SELECT rack_num
, MIN(_TIMESTAMP) AS appearance_time
FROM (
SELECT KEY AS rack_num
, VALUE ->> 'client_id' AS client_id
, VALUE ->> 'timestamp' AS _TIMESTAMP
FROM (
SELECT (JSONB_EACH(blocks)).*
FROM snapshots
) AS t
) AS racks
WHERE client_id = :client_id
GROUP BY rack_num, client_id
ORDER BY MIN(_TIMESTAMP) DESC;

关于python - Postgres JSONB - 查询所有根键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67398037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com