#python #mysql #sqlalchemy #set
#python #mysql #sqlalchemy #набор
Вопрос:
Как я могу ограничить значения столбца в базе данных MySQL одним или несколькими элементами предварительно указанного набора, используя SQLAlchemy? (В идеале, я хочу способ использовать SET
тип данных MySQL.)
Пример
Контекст
У меня есть эксперимент, включающий проведение измерений у многих людей в течение нескольких дней. Многие участники участвовали в эксперименте после его начала (поэтому данные за первые несколько дней отсутствуют), а иногда отдельные участники выпадают (данные за последние несколько дней отсутствуют). Также возможно, что у некоторых пользователей отсутствуют измерения в середине эксперимента.
Я хочу создать таблицу, в которой хранится некоторая информация о каждом человеке и перечислены дни, в которые были проведены их измерения.
Код
Я надеялся, что сработает что-то вроде следующего, поскольку примерно так SQLAlchemy поддерживает 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'
Я ожидал получить a Column
с типом данных SET, который может принимать значения day_1
, day_1,day2
, day_1,day_3
и т.д.
Ответ №1:
SET
Тип данных MySQL поддерживается диалектом MySQL:
from sqlalchemy.dialects import mysql
class MyTable(Base):
...
myset = Column(mysql.SET('day_1', 'day_2', 'day_3'), ...)