gpt4 book ai didi

json - 如何让 sqlachemy 像在 json_each 或 jsonb_each 中一样看到隐式横向连接?

转载 作者:行者123 更新时间:2023-12-05 04:45:58 26 4
gpt4 key购买 nike

我正在尝试找出使用 json_each 的正确方法。我见过一些技巧,例如使用 columntext。到目前为止,我已经找到了一种使用 table_valued 的非常干净的方法,除了交叉连接警告外,它仍然有效。

term = 'connection'
about_exp = func.json_each(EventHistory.event, '$.about').table_valued('value')
events = s.query(EventHistory).filter(about_exp.c.value == term)

EventHistory 包含一个 json 字段,如下所示:{"about": ["antenna", "connection", "modem", "network"]}

The resulting query works as expected but I'm getting the following warning:SAWarning: SELECT statement has a cartesian product between FROM element(s) "event_history" and FROM element "anon_1". Apply join condition(s) between each element to resolve.

对于任何想在这里进行实验的人来说,这是单元测试中的一个工作示例:https://gist.github.com/PiotrCzapla/579f76bdf95a485eaaafed1492d9a70e

最佳答案

到目前为止,我发现不发出警告的唯一方法是添加 join(about_exp, true())

    from sqlalchemy import true

about_exp = func.json_each(EventHistory.event, '$.about').table_valued('value')
events = s.query(EventHistory).join(about_exp, true()).filter(
about_exp.c.value == about_val
)

但它需要额外导入 true 和额外的 join 语句,如果有人有更好的解决方案请告诉我。

关于json - 如何让 sqlachemy 像在 json_each 或 jsonb_each 中一样看到隐式横向连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68996995/

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