J'ai une Enum
classe Python comme celle-ci:
from enum import Enum
class Seniority(Enum):
Intern = "Intern"
Junior_Engineer = "Junior Engineer"
Medior_Engineer = "Medior Engineer"
Senior_Engineer = "Senior Engineer"
Dans la base de données MYSQL, la colonne d'ancienneté ENUM a les valeurs "Intern", "Junior Engineer", "Medior Engineer", "Senior Engineer".
Le problème est que j'obtiens une erreur:
LookupError: "Junior Engineer" is not among the defined enum values
Cette erreur s'est produite lorsque j'appelle une requête comme:
UserProperty.query.filter_by(full_name='John Doe').first()
seniority
est une propriété enum dans le UserProperty
modèle.
class UserProperty(db.Model):
...
seniority = db.Column(db.Enum(Seniority), nullable=True)
...
Pour cette classe, j'ai défini la classe Schema en utilisant marshmallow
Schema
et à EnumField
partir du marshmallow_enum
package:
class UserPropertySchema(Schema):
...
seniority = EnumField(Seniority, by_value=True)
...
Que faire dans cette situation, car je ne peux pas définir de nom de propriété de classe python avec de l'espace. Comment forcer python à utiliser des valeurs de propriétés définies au lieu de noms de propriétés?
python
mysql
enums
marshmallow
Matija Lukic
la source
la source
Réponses:
Comme Shenanigator l'a déclaré dans le commentaire de ma question, nous pouvons utiliser des alias pour résoudre ce problème.
la source
Une liste est un grand nombre de noms emblématiques (individus) liés à des qualités uniques et stables. Dans une spécification, les individus peuvent être examinés par caractère, et le nombre lui-même peut être itéré.
Contenu du module
Ce module caractérise quatre classes de spécifications qui peuvent être utilisées pour caractériser des arrangements remarquables de noms et de qualités: Enum, IntEnum, Flag et IntFlag. Il caractérise également un décorateur, unique en son genre () et un assistant, auto.
class enum.Enum
Classe de base pour créer des constantes répertoriées. Voir segment API fonctionnelle pour une autre grammaire de développement.
classe enum.IntEnum
Classe de base pour créer des constantes répertoriées qui sont en outre des sous-classes de int.
classe enum.IntFlag
Classe de base pour créer des constantes répertoriées qui peuvent être consolidées en utilisant les administrateurs au niveau du bit sans perdre leur participation IntFlag. Les individus IntFlag sont en outre des sous-classes d'int.
class enum.Flag
Classe de base pour créer des constantes répertoriées qui peuvent être consolidées en utilisant les tâches au niveau du bit sans perdre leur inscription d'indicateur.
enum.unique ()
Décorateur de classe Enum qui garantit qu'un seul nom est lié à une valeur.
classe enum.auto
Les exemples sont remplacés par une incitation appropriée pour les individus Enum. Commencer vaut des débuts à 1.
Nouveau dans la variante 3.6: Flag, IntFlag, a
la source