如果MySQL枚举值的名称中有空格,如何定义Python枚举属性?
我有这样的Python如果MySQL枚举值的名称中有空格,如何定义Python枚举属性?,python,mysql,enums,marshmallow,Python,Mysql,Enums,Marshmallow,我有这样的PythonEnum类: from enum import Enum class Seniority(Enum): Intern = "Intern" Junior_Engineer = "Junior Engineer" Medior_Engineer = "Medior Engineer" Senior_Engineer = "Senior Engineer" 在MYSQL数据库中,资历枚举列的值为“实习生”、“初级工程师”、“中级工程师”、“高级
Enum
类:
from enum import Enum
class Seniority(Enum):
Intern = "Intern"
Junior_Engineer = "Junior Engineer"
Medior_Engineer = "Medior Engineer"
Senior_Engineer = "Senior Engineer"
在MYSQL数据库中,资历枚举列的值为“实习生”、“初级工程师”、“中级工程师”、“高级工程师”
问题是我得到了一个错误:
LookupError: "Junior Engineer" is not among the defined enum values
调用查询时发生此错误,如:
UserProperty.query.filter_by(full_name='John Doe').first()
seniority
是UserProperty
模型中的枚举属性
class UserProperty(db.Model):
...
seniority = db.Column(db.Enum(Seniority), nullable=True)
...
对于这个类,我已经使用marshmallow
Schema
和EnumField
从marshmallow\u enum
包定义了Schema类:
class UserPropertySchema(Schema):
...
seniority = EnumField(Seniority, by_value=True)
...
在这种情况下该怎么办,因为我不能用空格定义python类属性名。如何强制python使用已定义属性的值而不是属性名?正如Shenanigator在我的问题的评论中所说的,我们可以使用别名来解决这个问题
Seniority = Enum(
value='Seniority',
names=[
('Intern', 'Intern'),
('Junior Engineer', 'Junior Engineer'),
('Junior_Engineer', 'Junior_Engineer'),
('Medior Engineer', 'Medior Engineer'),
('Medior_Engineer', 'Medior_Engineer'),
('Senior Engineer', 'Senior Engineer'),
('Senior_Engineer', 'Senior_Engineer')
]
)
清单是许多象征性的名字(个人)与某种稳定的品质联系在一起。在一个规范中,可以通过字符查看个体,并且可以迭代计数本身 模块内容 这个模块描述了四个规范类,它们可以用来描述名称和质量的显著排列:Enum、IntEnum、Flag和IntFlag。它同样刻画了一个decorator,一个同类()和一个助手auto 类enum.enum 用于生成列出的常量的基类。有关其他开发语法,请参见段函数API 类enum.IntEnum 用于生成列出的常量的基类,这些常量是int的附加子类 类enum.IntFlag 用于生成列出的常量的基类,这些常量可以使用按位管理员进行合并,而不会丢失其IntFlag参与。IntFlag个体是int的附加子类 类枚举标志 用于生成列出的常量的基类,这些常量可以利用按位任务合并,而不会丢失其标志注册 enum.unique() 枚举类修饰符,保证只有一个名称绑定到任何一个值 类enum.auto 用适当的Enum个人激励代替示例。开始价值从1开始 变体3.6中新增:Flag、IntFlag、a查看这是否有帮助