ENUM-Typ in SQLAlchemy mit PostgreSQL

8

Ich verwende den SQLAlchemy-Kern mit einer postgresql-Datenbank und möchte das hinzufügen ENUM Typ zu meiner Tabellendefinition. Laut der PostgreSQL-Dokumentation muss der ENUM-Typ vor der Erstellung der Tabelle definiert werden:

%Vor%

Das Problem ist, wenn ich die Tabellendefinition erstelle. Nach dem Lesen der SQLAlchemy-Dokumentation konnte ich keine Implementierung finden Beispiel. Ich habe so etwas versucht, aber es hat nicht funktioniert:

%Vor%

Wie muss es gemacht werden?

    
Ander 06.03.2015, 07:48
quelle

2 Antworten

12

Sie müssen Enum von sqlalchemy importieren und einen Namen hinzufügen. Es sollte so funktionieren:

%Vor%     
Tim Osadchiy 06.03.2015, 07:54
quelle
14

@ Tims Antwort ist definitiv richtig, aber ich wollte die Art und Weise anbieten, wie ich meine ENUMs eingerichtet habe.

In meinem models.py erstelle ich die Werte als Tupel

skill_levels = ('Zero', 'A little', 'Some', 'A lot')

Dann werde ich eine skill_level_enum-Variable erstellen und ihr eine ENUM-Klasse mit den Skill-Level-Werten als Argumente zuweisen.

skill_level_enum = ENUM(*skill_levels, name="skill_level")

In meinem Tabellenmodell gebe ich dann skill_level_enum

ein %Vor%

Ich habe festgestellt, dass dies meinen Code viel sauberer macht und ich bin in der Lage, die skill_levels am Anfang meiner Datei zu aktualisieren, anstatt meine Modelle nach dem richtigen Update zu durchsuchen.

    
m1yag1 09.10.2015 15:41
quelle

Tags und Links