python—如何在db(mysql)中保留varchar,而在sqlalchemy模型中保留enum

cclgggtu  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(309)

我想在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模型才能正常工作(我听说过混合动力车型,但不确定它在这里是否适用)
谢谢!

mwg9r5ms

mwg9r5ms1#

显然答案非常简单(!),我们不需要做什么特别的事情——sqlalchemy本身就支持它。
意思-您可以将特定列设置为 INT 在数据库里,但是 enum 在模型中,当查询db时,sqlalchemy将自己转换它。插入数据库时也是如此:)
我将它与声明性枚举一起使用,这意味着它的值是字符串(并且它有一个函数- from_string() ). 所以我曾经 VARCHAR 专栏,它像一个魅力!

相关问题