python - 使用 sqlalchemy 在 json 键上创建索引(表达式索引)

标签 python postgresql sqlalchemy

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

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

最佳答案

我已经找到了这个问题的答案。正如 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 .

关于python - 使用 sqlalchemy 在 json 键上创建索引(表达式索引),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24496516/

相关文章:

sql - 将数据从相关表复制到另一个相关表的最佳方法是什么?

python - 在 PyTest 中创建一个临时目录

python - Numpy:使用 2D 索引数组访问 2D 数组

ruby-on-rails - 事件记录复杂连接

python - 在 wtform 提交上更新 SQLAlchemy 记录

python - Sqlalchemy 双关联表?

python - 如何在 postgresql 上使用 sqlalchemy 进行正确的更新插入?

python - 使用 Chrome 时 Selenium "selenium.common.exceptions.NoSuchElementException"

python - 当html中没有显示数字时,如何从网站中提取表格?

sql - Postgres 序列值插入