我想在mysql数据库中添加一个新的int列,以便在sqlalchemy orm中将其转换为枚举。
例如,假设我有一个枚举:
class employee_type(Enum):
Full_time = 1
Part_time = 2
Student = 3
我想把那些参数留在数据库里- 1,2,3...
,但当开发人员编写涉及此模型的代码时,他们只会使用 Enum
,而不必执行getter和setter函数。
所以他们可以- instance_of_model.employee_type
得到一个 Enum
. 以及- new_instance = model_name(employee_type=Employee_type.Full_time..)
我应该如何定义sqlalchemy模型才能正常工作(我听说过混合动力车型,但不确定它在这里是否适用)
谢谢!
1条答案
按热度按时间mwg9r5ms1#
显然答案非常简单(!),我们不需要做什么特别的事情——sqlalchemy本身就支持它。
意思-您可以将特定列设置为
INT
在数据库里,但是enum
在模型中,当查询db时,sqlalchemy将自己转换它。插入数据库时也是如此:)我将它与声明性枚举一起使用,这意味着它的值是字符串(并且它有一个函数-
from_string()
). 所以我曾经VARCHAR
专栏,它像一个魅力!