2014-06-30 5 views
5

Die Situation ist, ich habe eine JSON-Spalte in einer PostgreSQL-Tabelle. Ich möchte einen Index für einen oder mehrere Schlüssel im JSON erstellen. Ich glaube, ich weiß, wie man das macht mit sql (Randbemerkung: Ich hatte den Eindruck, dass Sie jsonb verwendet haben, um diese Art der Indizierung nach dem PostgreSQL docs haben. Scheint nicht so ist der Fall.)Verwenden von sqlalchemy zum Erstellen eines Index für einen JSON-Schlüssel (Expressionsindex)

Aus Konsistenzgründen möchte ich dies über sqlalchemy tun, aber ich sehe keine Hinweise darauf, wie dies in ihren Dokumenten zu tun ist. Ist das möglich?

+0

Sie möchten einen Ausdruck Index über SQLAlchemy erstellen? Sie müssen einen Weg finden, um SQL-Anweisungen ausführen zu können. Ich bezweifle, dass das nativ unterstützt wird. –

Antwort

7

Ich habe die Antwort auf diese Frage herausgefunden. Wie Craig herausstellte, ist dies ein ausdrucksbasierter Index, der auf dem JSON-Spaltentyp in Postgresql 9.3 ermöglicht wurde. Dies kann auf folgende Weise durch SQLAlchemy erfolgen:

ein Modell namens MyModel und ein JSON Spaltentyp data genannt Da diese Form annimmt:

{"my_key": "my_value"} 

einen Ausdruck basierten Index auf my_key zu erstellen, Sie dazu könnte:

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

die ursprüngliche Antwort auf diese Frage von Mike Bayer in der SQLAlchemy google-Gruppe ist, die Sie here finden.

Verwandte Themen