【问题标题】:How to keep VARCHAR in the DB (MYSQL), but ENUM in the sqlalchemy model如何在数据库(MYSQL)中保留 VARCHAR,但在 sqlalchemy 模型中保留 ENUM
【发布时间】:2018-09-22 22:30:44
【问题描述】:

我想在我的 MYSQL 数据库中添加一个新的 Int 列,以便在 sqlalchemy ORM 中将其转换为 ENUM。

例如,假设我有这个枚举:

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 模型才能正常工作? (我听说过混合类型,但不确定它是否可以在这里工作)

谢谢!

【问题讨论】:

    标签: python mysql enums orm sqlalchemy


    【解决方案1】:

    显然答案非常简单(!),我们不需要做任何特别的事情 - SQLAlchemy 本身就支持它。

    含义——你可以在DB中设置具体列为INT,但在模型中设置为enum,查询DB时SQLAlchemy会自行转换。插入数据库时​​也是如此:)

    我将它与声明性枚举一起使用,这意味着它的值是字符串(并且它有一个函数 - from_string())。 因此,一旦我使用了VARCHAR 列,它就像一个魅力!

    【讨论】:

      猜你喜欢
      • 2014-03-23
      • 2014-08-27
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多