gpt4 book ai didi

json - 如何使用 SQLAlchemy 查询 JSON 类型的字段?

转载 作者:行者123 更新时间:2023-12-03 15:56:55 53 4
gpt4 key购买 nike

这只是一个简单的例子。

field = [[1,12,6], [2,12,8]]

我考虑将其存储在 sqlite3 数据库中的 SQLAlchemy 的 json 类型字段中。

但是我怎样才能用 SQLAlchemy(不是 SQL)查询呢?
例如
  • len(field) 为 3 的行
  • field[1][2] 不是 12 的行
  • len(field[*]) 不是 3 的行
  • 按字段分组[2]
  • sum field[1] 其中 field[0] 是 1

  • 甚至有可能吗?

    也许用经典的多对多表(包括链接表)而不是 json-field 来实现这个会更容易?

    最佳答案

    根据官方文档,这些是 SQLAlchemy 为 JSON 字段提供的可用方法。

    JSON 提供了几种操作:

    索引操作:

    data_table.c.data['some key']

    返回文本的索引操作(文本比较所需):
    data_table.c.data['some key'].astext == 'some value'

    带有内置 CAST 调用的索引操作:
    data_table.c.data['some key'].cast(Integer) == 5

    路径索引操作:
    data_table.c.data[('key_1', 'key_2', ..., 'key_n')]

    返回文本的路径索引操作(文本比较所需):
    data_table.c.data[('key_1', 'key_2', ..., 'key_n')].astext == \
    'some value'

    http://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#sqlalchemy.dialects.postgresql.JSON

    根据我对 PostgreSQL 中 JSON 类型的了解,最好仅在您想要整个 JSON 对象时使用它。如果你想对 JSON 对象的字段进行类似 SQL 的操作,那么最好使用经典的 SQL 关系。这是我发现的一个来源说同样的话,但还有更多。 http://blog.2ndquadrant.com/postgresql-anti-patterns-unnecessary-jsonhstore-dynamic-columns/

    关于json - 如何使用 SQLAlchemy 查询 JSON 类型的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31804378/

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