这是对best-way-to-do-enum-in-sqlalchemy非常有趣的答案的后续。Cito 扩展了 Zzzeeks 的答案以包括非常好的排序。Cito 在结尾处还留下了一段诱人的代码。
class DeclEnumType(SchemaType, TypeDecorator):
"""DeclEnum augmented so that it can persist to the database."""
这正是我试图构建一个 Python 枚举,它在数据库中自己的表中表示。EmployeeType.full_time 在 Python 代码中可用并且在 DB 中有自己的表(对于这个简单的示例,只有一个 idx 和名称)。
但是,我不确定我是否了解如何使用 Cito 的 DeclEnumType 示例,因为以下示例不会在数据库中创建 EmployeeType 表。
class EmployeeType(DeclEnum):
# order will be as stated: full_time, part_time, contractor
full_time = EnumSymbol("Full Time")
part_time = EnumSymbol("Part Time")
contractor = EnumSymbol("Contractor")
class Employee(Base):
__tablename__ = 'employee'
id = Column(Integer, primary_key=True)
name = Column(String(60), nullable=False)
type = Column(DeclEnumType(EmployeeType))
关于如何获得这种双重表示的任何想法?