Ich habe Python- Enum
Klasse wie folgt:
from enum import Enum
class Seniority(Enum):
Intern = "Intern"
Junior_Engineer = "Junior Engineer"
Medior_Engineer = "Medior Engineer"
Senior_Engineer = "Senior Engineer"
In der MYSQL-Datenbank hat die ENUM-Spalte "Dienstalter" die Werte "Intern", "Junior Engineer", "Medior Engineer", "Senior Engineer".
Das Problem ist, dass ich eine Fehlermeldung bekomme:
LookupError: "Junior Engineer" is not among the defined enum values
Dieser Fehler ist aufgetreten, wenn ich eine Abfrage wie folgt aufrufe:
UserProperty.query.filter_by(full_name='John Doe').first()
seniority
ist enum Eigenschaft im UserProperty
Modell.
class UserProperty(db.Model):
...
seniority = db.Column(db.Enum(Seniority), nullable=True)
...
Für diese Klasse habe ich die Schema-Klasse mit marshmallow
Schema
und EnumField
aus dem marshmallow_enum
Paket definiert:
class UserPropertySchema(Schema):
...
seniority = EnumField(Seniority, by_value=True)
...
Was ist in dieser Situation zu tun, da ich den Eigenschaftsnamen der Python-Klasse nicht mit Leerzeichen definieren kann? Wie kann man Python zwingen, Werte definierter Eigenschaften anstelle von Eigenschaftsnamen zu verwenden?
python
mysql
enums
marshmallow
Matija Lukic
quelle
quelle
Antworten:
Wie Shenanigator im Kommentar meiner Frage feststellte, können wir Aliase verwenden, um dieses Problem zu lösen.
quelle
Eine Liste besteht aus vielen emblematischen Namen (Individuen), die an eine einzigartige, beständige Eigenschaft gebunden sind. Innerhalb einer Spezifikation können die Individuen nach Zeichen betrachtet werden, und die Zählung selbst kann wiederholt werden.
Modulinhalt
Dieses Modul charakterisiert vier Spezifikationsklassen, mit denen bemerkenswerte Anordnungen von Namen und Qualitäten charakterisiert werden können: Enum, IntEnum, Flag und IntFlag. Es kennzeichnet ebenfalls einen Dekorateur, einen Unikat () und einen Adjutanten, auto.
Klasse enum.Enum
Basisklasse zum Erstellen aufgelisteter Konstanten. Eine weitere Entwicklungsgrammatik finden Sie im Abschnitt Funktionale API.
Klasse enum.IntEnum
Basisklasse zum Erstellen aufgelisteter Konstanten, die zusätzlich Unterklassen von int sind.
Klasse enum.IntFlag
Basisklasse zum Erstellen aufgelisteter Konstanten, die mithilfe der bitweisen Administratoren konsolidiert werden können, ohne dass ihre IntFlag-Teilnahme verloren geht. IntFlag-Individuen sind zusätzlich Unterklassen von int.
Klasse enum.Flag
Basisklasse zum Erstellen aufgelisteter Konstanten, die mithilfe der bitweisen Aufgaben konsolidiert werden können, ohne dass die Flag-Registrierung verloren geht.
enum.unique ()
Enum Klasse Dekorateur, der nur einen Namen garantiert, ist an jeden Wert gebunden.
Klasse enum.auto
Beispiele werden durch einen geeigneten Anreiz für Enum-Personen ersetzt. Anfang wert Anfänge bei 1.
Neu in Variante 3.6: Flag, IntFlag, a
quelle