У меня есть Enum
класс Python, как это:
from enum import Enum
class Seniority(Enum):
Intern = "Intern"
Junior_Engineer = "Junior Engineer"
Medior_Engineer = "Medior Engineer"
Senior_Engineer = "Senior Engineer"
В базе данных MYSQL столбец старшинства ENUM имеет значения «Стажер», «Младший инженер», «Младший инженер», «Старший инженер».
Проблема в том, что я получаю ошибку:
LookupError: "Junior Engineer" is not among the defined enum values
Эта ошибка произошла, когда я вызываю запрос как:
UserProperty.query.filter_by(full_name='John Doe').first()
seniority
свойство enum в UserProperty
модели.
class UserProperty(db.Model):
...
seniority = db.Column(db.Enum(Seniority), nullable=True)
...
Для этого класса я определил класс Schema, используя marshmallow
Schema
и EnumField
из marshmallow_enum
пакета:
class UserPropertySchema(Schema):
...
seniority = EnumField(Seniority, by_value=True)
...
Что делать в этой ситуации, потому что я не могу определить имя свойства класса Python с пробелом. Как заставить Python использовать значения определенных свойств вместо имен свойств?
python
mysql
enums
marshmallow
Матия Лукич
источник
источник
Ответы:
Как сказал Шенанигатор в комментарии к моему вопросу, мы можем использовать псевдонимы для решения этой проблемы.
источник
Список - это множество символических имен (отдельных лиц), связанных с одним из устойчивых качеств. Внутри спецификации на отдельных персонажей можно смотреть, а сам счет можно повторять.
Содержание модуля
Этот модуль характеризует четыре класса спецификации, которые можно использовать для характеристики замечательных расположений имен и качеств: Enum, IntEnum, Flag и IntFlag. Он также характеризует один декоратор, единственный в своем роде () и один помощник, auto.
Класс enum.Enum
Базовый класс для создания перечисленных констант. Смотрите сегмент Functional API для другой грамматики разработки.
Класс enum.IntEnum
Базовый класс для создания перечисленных констант, которые дополнительно являются подклассами int.
Класс enum.IntFlag
Базовый класс для создания перечисленных констант, которые могут быть объединены с использованием побитовых администраторов без потери участия в IntFlag. IntFlag особи дополнительно являются подклассами int.
Класс enum.Flag
Базовый класс для создания перечисленных констант, которые можно консолидировать, используя побитовые задачи, не теряя при этом их флаг регистрации.
enum.unique ()
Декоратор класса Enum, который гарантирует только одно имя, привязан к любой ценности.
класс enum.auto
Примеры заменяются подходящим стимулом для людей Enum. Начало стоит начала с 1.
Новое в варианте 3.6: Flag, IntFlag, a
источник