Документация содержит пример:
import enum
class MyEnum(enum.Enum):
one = 1
two = 2
three = 3
t = Table(
'data', MetaData(),
Column('value', Enum(MyEnum))
)
Выше указаны имена строк каждого элемента, например, «один», «два», «три». », Сохраняются в базе данных; значения перечисления Python, обозначенные здесь как целые числа, не используются; поэтому значение каждого перечисления может быть любым типом объекта Python независимо от того, является ли он постоянным.
Чтобы сохранить значения, а не имена, можно использовать параметр Enum.values_callable
. Для простого перечисления, в котором используются строковые значения, достаточно вызвать, например,
lambda x: [e.value for e in x]
.
Таким образом, чтобы использовать значения вместо ключей, укажите values_callable
:
t = Table(
'data', MetaData(),
Column('value', Enum(MyEnum,
values_callable=lambda x: [str(e.value) for e in MyEnum])
)
)
)
Я бы предложил использовать echo=True
с create_engine
, чтобы увидеть, что SQL было сгенерировано.