Tengo una Enum
clase de Python como esta:
from enum import Enum
class Seniority(Enum):
Intern = "Intern"
Junior_Engineer = "Junior Engineer"
Medior_Engineer = "Medior Engineer"
Senior_Engineer = "Senior Engineer"
En la base de datos MYSQL, la columna ENUM de antigüedad tiene valores "Intern", "Junior Engineer", "Medior Engineer", "Senior Engineer".
El problema es que me sale un error:
LookupError: "Junior Engineer" is not among the defined enum values
Este error ha ocurrido cuando llamo consulta como:
UserProperty.query.filter_by(full_name='John Doe').first()
seniority
es propiedad enum en el UserProperty
modelo.
class UserProperty(db.Model):
...
seniority = db.Column(db.Enum(Seniority), nullable=True)
...
Para esta clase, he definido la clase de esquema usando marshmallow
Schema
y EnumField
desde el marshmallow_enum
paquete:
class UserPropertySchema(Schema):
...
seniority = EnumField(Seniority, by_value=True)
...
Qué hacer en esta situación, porque no puedo definir el nombre de propiedad de la clase python con espacio. ¿Cómo forzar a Python a usar valores de propiedades definidas en lugar de nombres de propiedades?
python
mysql
enums
marshmallow
Matija Lukic
fuente
fuente
Respuestas:
Como Shenanigator declaró en el comentario de mi pregunta, podemos usar alias para resolver este problema.
fuente
Una lista es una gran cantidad de nombres emblemáticos (individuos) vinculados a cualidades únicas y constantes. Dentro de una especificación, los individuos pueden ser vistos por carácter, y el recuento en sí puede ser iterado.
Contenido del módulo
Este módulo caracteriza cuatro clases de especificación que se pueden utilizar para caracterizar arreglos notables de nombres y cualidades: Enum, IntEnum, Flag e IntFlag. También caracteriza a un decorador, uno de un tipo () y un asistente, auto.
clase enum.
Clase base para hacer constantes enumeradas. Ver segmento API funcional para otra gramática de desarrollo.
clase enum.IntEnum
Clase base para hacer constantes enumeradas que además son subclases de int.
clase enum.IntFlag
Clase base para hacer constantes enumeradas que se pueden consolidar utilizando los administradores bit a bit sin perder su participación en IntFlag. Los individuos IntFlag también son subclases de int.
clase enum.
Clase base para hacer constantes enumeradas que se pueden consolidar utilizando las tareas bit a bit sin perder su inscripción de Flag.
enum.unique ()
El decorador de clase Enum que garantiza un solo nombre está vinculado a cualquier valor.
clase enum.auto
Los ejemplos se suplantan con un incentivo adecuado para las personas Enum. Comienzo digno de comienzos en 1.
Nuevo en la variante 3.6: Flag, IntFlag, a
fuente