gpt4 book ai didi

python - 如果 MySQL ENUM 值的名称中有空格,如何定义 Python Enum 属性?

转载 作者:行者123 更新时间:2023-12-03 15:47:27 25 4
gpt4 key购买 nike

我有 Python Enum像这样的类:

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()
seniorityUserProperty 中的枚举属性模型。
class UserProperty(db.Model):
...
seniority = db.Column(db.Enum(Seniority), nullable=True)
...

对于这个类,我使用 marshmallow 定义了 Schema 类。 SchemaEnumField来自 marshmallow_enum包裹:
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')
]
)

关于python - 如果 MySQL ENUM 值的名称中有空格,如何定义 Python Enum 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59859885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com