Использование пользовательских типов .
Пример:
import sqlalchemy.types as types
class ChoiceType(types.TypeDecorator):
impl = types.String
def __init__(self, choices, **kw):
self.choices = dict(choices)
super(ChoiceType, self).__init__(**kw)
def process_bind_param(self, value, dialect):
return [k for k, v in self.choices.iteritems() if v == value][0]
def process_result_value(self, value, dialect):
return self.choices[value]
Использование будет выглядеть следующим образом:
class Entity(Base):
__tablename__ = "entity"
height = Column(
ChoiceType({"short": "short", "medium": "medium", "tall": "tall"}), nullable=False
)
Если выиспользуя Python 3, вы должны изменить iteritems () на items ().