情况是我在postgresql表中有一个JSON列类型。我想在json中的一个或多个键上创建索引。我相信我知道如何使用sql来做到这一点(旁注:我的印象是你必须使用jsonb来根据postgresql docs进行这种索引。不会这样做。似乎就是这样。)
为了保持一致性,我想通过sqlalchemy这样做,但我没有看到如何在他们的文档中提到这一点。这可能吗?
答案 0 :(得分:7)
我已经找到了这个问题的答案。正如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。