有没有一种方法可以将Python集用作SQLAlchemy列的数据类型?

时间:2020-08-17 21:33:07

标签: python mysql sqlalchemy set

如何使用SQLAlchemy将MySQL数据库中的列的值限制为预先指定的集合的一个或多个元素? (理想情况下,我想要一种使用MySQL的SET datatype的方法。)

示例

上下文

我有一个实验,涉及在几天内对许多人进行测量。实验开始后,许多人进入了实验(因此前几天的数据丢失了),偶尔有人退出了实验(后几天的数据丢失了)。在实验过程中,某些人也可能缺少测量结果。

我想制作一个表,其中存储有关每个人的一些信息,并列出进行测量的日期。

代码

我希望像下面这样的方法可以工作,因为这大致就是SQLAlchemy supports Enum s的方式。

import sqlalchemy as sql
experiment_days = {'day_1', 'day_2', 'day_3'}
sql.Column('days_measured', experiment_days)

不幸的是,我收到此错误消息:

AttributeError: 'set' object has no attribute '_set_parent_with_dispatch'

我期望获得一个Column,其SET数据类型可以采用值day_1day_1,day2day_1,day_3等。

1 个答案:

答案 0 :(得分:1)

MySQL dialect支持MySQL SET数据类型:

from sqlalchemy.dialects import mysql

class MyTable(Base):

    ...

    myset = Column(mysql.SET('day_1', 'day_2', 'day_3'), ...)