Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果MySQL枚举值的名称中有空格,如何定义Python枚举属性?_Python_Mysql_Enums_Marshmallow - Fatal编程技术网

如果MySQL枚举值的名称中有空格,如何定义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数据库中,资历枚举列的值为“实习生”、“初级工程师”、“中级工程师”、“高级

我有这样的Python
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

查看这是否有帮助