1. ホーム
  2. python

[解決済み] Sqlalchemyでenumを行うための最良の方法?

2022-02-17 08:31:23

質問

sqlalchemyについて読んでいて、次のようなコードを目にしました。

employees_table = Table('employees', metadata,
    Column('employee_id', Integer, primary_key=True),
    Column('name', String(50)),
    Column('manager_data', String(50)),
    Column('engineer_info', String(50)),
    Column('type', String(20), nullable=False)
)

employee_mapper = mapper(Employee, employees_table, \
    polymorphic_on=employees_table.c.type, polymorphic_identity='employee')
manager_mapper = mapper(Manager, inherits=employee_mapper, polymorphic_identity='manager')
engineer_mapper = mapper(Engineer, inherits=employee_mapper, polymorphic_identity='engineer')

typeをint型にして、ライブラリに定数を用意したほうがいいでしょうか? それとも、typeをenumにすればいいのでしょうか?

どのように解決するのですか?

SQLAlchemyは0.6からEnum型を持つようになりました。 http://docs.sqlalchemy.org/en/latest/core/type_basics.html?highlight=enum#sqlalchemy.types.Enum

ただし、データベースがネイティブのenum型を持っている場合のみ、この方法を使うことをお勧めします。そうでない場合は、個人的にはint型を使用します。