Mam Enum
taką klasę Python :
from enum import Enum
class Seniority(Enum):
Intern = "Intern"
Junior_Engineer = "Junior Engineer"
Medior_Engineer = "Medior Engineer"
Senior_Engineer = "Senior Engineer"
W bazie danych MYSQL kolumna ENUM starszeństwa ma wartości „Intern”, „Junior Engineer”, „Medior Engineer”, „Senior Engineer”.
Problem polega na tym, że pojawia się błąd:
LookupError: "Junior Engineer" is not among the defined enum values
Ten błąd wystąpił, gdy wywołuję zapytanie takie jak:
UserProperty.query.filter_by(full_name='John Doe').first()
seniority
jest właściwością wyliczania w UserProperty
modelu.
class UserProperty(db.Model):
...
seniority = db.Column(db.Enum(Seniority), nullable=True)
...
Dla tej klasy Mam klasy zdefiniowane przy użyciu schematu marshmallow
Schema
i EnumField
od marshmallow_enum
pakietu:
class UserPropertySchema(Schema):
...
seniority = EnumField(Seniority, by_value=True)
...
Co zrobić w tej sytuacji, ponieważ nie mogę zdefiniować nazwy właściwości klasy python za pomocą spacji. Jak zmusić pytona do używania wartości zdefiniowanych właściwości zamiast nazw właściwości?
python
mysql
enums
marshmallow
Matija Lukic
źródło
źródło
Odpowiedzi:
Jak stwierdził Shenanigator w komentarzu do mojego pytania, możemy użyć aliasów, aby rozwiązać ten problem.
źródło
Lista zawiera wiele emblematycznych nazw (osób) powiązanych z jedynymi w swoim rodzaju, stałymi cechami. Wewnątrz specyfikacji osoby można przeglądać według postaci, a samą liczbę można powtarzać.
Zawartość modułu
Ten moduł charakteryzuje cztery klasy specyfikacji, które można wykorzystać do scharakteryzowania niezwykłych układów nazw i cech: Enum, IntEnum, Flag i IntFlag. Podobnie charakteryzuje jednego dekoratora, jedyny w swoim rodzaju () i jednego pomocnika, auto.
klasa enum.Enum
Klasa podstawowa do tworzenia stałych na liście. Zobacz segment Functional API, aby uzyskać inną gramatykę programistyczną.
klasa enum.IntEnum
Klasa podstawowa do tworzenia stałych na liście, które są dodatkowo podklasami int.
klasa enum.IntFlag
Klasa podstawowa do tworzenia stałych na liście, które mogą być konsolidowane przy użyciu administratorów bitowych bez utraty udziału IntFlag. Osoby IntFlag są dodatkowo podklasami int.
klasa enum.Flag
Klasa podstawowa do tworzenia stałych na liście, które mogą być konsolidowane przy użyciu bitowych zadań bez utraty rejestracji flag.
enum.unique ()
Dekorator klasy Enum, który gwarantuje, że tylko jedno imię jest powiązane z jedną wartością.
klasa enum.auto
Przykłady zostały wyparte z odpowiednią zachętą dla osób Enum. Warto zacząć od 1.
Nowość w wariancie 3.6: Flag, IntFlag, a
źródło