Eu tenho Enum
classe Python como esta:
from enum import Enum
class Seniority(Enum):
Intern = "Intern"
Junior_Engineer = "Junior Engineer"
Medior_Engineer = "Medior Engineer"
Senior_Engineer = "Senior Engineer"
No banco de dados MYSQL, a coluna ENUM de antiguidade possui os valores "Estagiário", "Engenheiro júnior", "Engenheiro médio", "Engenheiro sênior".
O problema é que eu recebo um erro:
LookupError: "Junior Engineer" is not among the defined enum values
Este erro ocorreu quando eu chamo uma consulta como:
UserProperty.query.filter_by(full_name='John Doe').first()
seniority
é uma propriedade enum no UserProperty
modelo.
class UserProperty(db.Model):
...
seniority = db.Column(db.Enum(Seniority), nullable=True)
...
Para esta classe, defini a classe Schema usando marshmallow
Schema
e EnumField
do marshmallow_enum
pacote:
class UserPropertySchema(Schema):
...
seniority = EnumField(Seniority, by_value=True)
...
O que fazer nessa situação, porque não consigo definir o nome da propriedade da classe python com espaço. Como forçar o python a usar valores de propriedades definidas em vez de nomes de propriedades?
python
mysql
enums
marshmallow
Matija Lukic
fonte
fonte
Respostas:
Como Shenanigator afirmou no comentário da minha pergunta, podemos usar aliases para resolver esse problema.
fonte
Uma lista contém muitos nomes emblemáticos (indivíduos) vinculados a qualidades únicas e constantes. Dentro de uma especificação, os indivíduos podem ser vistos por caractere e a própria contagem pode ser repetida.
Conteúdo do módulo
Este módulo caracteriza quatro classes de especificação que podem ser utilizadas para caracterizar arranjos notáveis de nomes e qualidades: Enum, IntEnum, Flag e IntFlag. Da mesma forma, caracteriza um decorador, um de um tipo () e um auxiliar, automático.
classe enum.Enum
Classe base para criar constantes listadas. Consulte a API Funcional do segmento para obter outra gramática de desenvolvimento.
classe enum.IntEnum
Classe base para criar constantes listadas que são subclasses adicionais de int.
classe enum.IntFlag
Classe base para criar constantes listadas que podem ser consolidadas utilizando os administradores bit a bit sem perder sua participação no IntFlag. Os indivíduos IntFlag também são subclasses de int.
classe enum.Flag
Classe base para criar constantes listadas que podem ser consolidadas utilizando as tarefas bit a bit sem perder a inscrição no Flag.
enum.unique ()
O decorador de classe Enum, que garante apenas um nome, está vinculado a qualquer valor.
classe enum.auto
Exemplos são suplantados com um incentivo adequado para indivíduos Enum. Início no valor de 1.
Novo na variante 3.6: Flag, IntFlag, um
fonte