Как правильно описывать enum в sqlalchemy?

Создал свое поле ENUM как в документации по значениям из строк в БД ('one / 1', 'two / 2')

import enum
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy import  Column, String, Boolean, BigInteger, Enum

class MyEnum(enum.Enum):
    one = 'one / 1'
    two = 'two / 2'

class Test(DeclarativeBase):
    __tablename__ = 'test'
    id = Column(BigInteger, unique=True, primary_key=True)
    name = Column(String(100), nullable=False)
    value = Column(Enum(MyEnum))

Но при выборе всех данных из таблицы данных

sql = select(Test).where(Test.name == 'имя_со_всеми_enum')
engine = create_engine('mysql://MYroot:[email protected]:3307/My_bd', echo=True)
with engine.connect() as conn:
    print(pd.read_sql(sql, conn))

выдает ошибку:

LookupError: 'one / 1' is not among the defined enum values. Enum name: enumuseragent. Possible values: one , two

Есть предположение, что неправильно описал класс MyEnum, если так, то в чем просчитался?


Ответы (1 шт):

Автор решения: Алексей

Во-общем, если кто столкнется вот решение:

class Test(DeclarativeBase):
    __tablename__ = 'test'
    id = Column(BigInteger, unique=True, primary_key=True)
    name = Column(String(100), nullable=False)
    value = Column(Enum(MyEnum).values_callable)

→ Ссылка