我想在我的MYSQL DB中添加一个新的Int列,以便在sqlalchemy ORM中将它转换为ENUM。
例如,让我说我有这个枚举:
class employee_type(Enum):
Full_time = 1
Part_time = 2
Student = 3
我想在DB中保留这些参数 - 1,2,3...
,但是当开发人员编写涉及此模型的代码时 - 他们将只使用Enum
,而不必通过getter和setter函数。
所以他们可以做到 - instance_of_model.employee_type
并获得Enum
。而且 - new_instance = model_name(employee_type=Employee_type.Full_time..)
我应该如何定义我的sqlalchemy模型以便它可以工作? (我听说过混合型,但不确定它会在这里起作用)
谢谢!
答案 0 :(得分:0)
显然答案非常简单(!),我们不需要做任何特别的事情 - SQLAlchemy自己支持它。
含义 - 您可以在DB中将特定列设置为INT
,但在模型中设置为enum
,并且在查询DB时,SQLAlchemy将自行转换它。插入数据库时也一样:)
我将它与声明性枚举一起使用,这意味着它的值是字符串(它有一个函数 - from_string()
)。
所以,一旦我使用VARCHAR
列,它就像一个魅力!