【问题标题】:Using sqlalchemy to create an index on a json key (expression index)使用 sqlalchemy 在 json 键上创建索引(表达式索引)
【发布时间】:2014-08-21 04:50:39
【问题描述】:

情况是我在 postgresql 表中有一个 JSON 列类型。我想在 json 中的一个或多个键上创建一个索引。我相信我知道如何使用 sql 来做到这一点(旁注:我的印象是你必须使用 jsonb 才能根据 postgresql docs 进行这种索引。看起来不是这样的.)

为了保持一致性,我想通过 sqlalchemy 做到这一点,但我在他们的文档中没有看到任何关于如何做到这一点的提及。这可能吗?

【问题讨论】:

  • 您想通过 SQLAlchemy 创建表达式索引吗?你需要找到一种方法让它运行任意 SQL,我真的怀疑它是否会原生支持。

标签: python postgresql sqlalchemy


【解决方案1】:

我已经找到了这个问题的答案。正如 Craig 所指出的,这是一个基于表达式的索引,它可以在 Postgresql 9.3 中的 JSON 列类型上实现。这可以通过 SQLAlchemy 以下列方式完成:

给定一个名为 MyModel 的模型和一个名为 data 的 JSON 列类型,采用这种形式:

{"my_key": "my_value"}

要在 my_key 上创建基于表达式的索引,您可以这样做:

index = Index("my_index_name", MyModel.c.data['my_key'].astext)
index.create(engine)

这个问题的原始答案来自 SQLAlchemy google 组的 Mike Bayer,您可以找到 here

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 1970-01-01
    • 2019-07-13
    • 2021-10-01
    • 2015-09-02
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多