2014-06-30 99 views
5

情況是我在postgresql表中有一個JSON列類型。我想在json中的一個或多個鍵上創建一個索引。我相信我知道如何做到這一點使用sql(注意:我的印象是,你必須使用jsonb有這種索引根據postgresql docs。似乎並不是這種情況。)使用sqlalchemy在json鍵(表達式索引)上創建索引

爲了一致性,我想通過sqlalchemy來做到這一點,但我沒有看到任何提及如何在他們的文檔中做到這一點。這可能嗎?

+0

你想通過SQLAlchemy創建一個表達式索引?你需要找到一種方法讓它運行任意SQL,我真的懷疑它會在本地支持。 –

回答

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的谷歌組,你可以找到here英寸