【问题标题】:Is there a way to use a Python set as the data type for an SQLAlchemy Column?有没有办法使用 Python 集作为 SQLAlchemy 列的数据类型?
【发布时间】:2020-12-07 01:35:56
【问题描述】:

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

示例

上下文

我有一个实验,需要在几天内对许多人进行测量。许多人在实验开始后就进入了实验(所以前几天的数据缺失),偶尔会有人退出(最后几天的数据缺失)。也有可能有些人在实验过程中丢失了测量值。

我想制作一个表格来存储每个人的一些信息并列出他们进行测量的日期。

代码

我希望像下面这样的东西会起作用,因为这就是 SQLAlchemy supportsEnums 的大致方式。

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,它的数据类型可以是 day_1day_1,day2day_1,day_3 等值。

【问题讨论】:

    标签: python mysql sqlalchemy set


    【解决方案1】:

    MySQL dialect 支持 MySQL SET 数据类型:

    from sqlalchemy.dialects import mysql
    
    class MyTable(Base):
    
        ...
    
        myset = Column(mysql.SET('day_1', 'day_2', 'day_3'), ...) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      相关资源
      最近更新 更多