皆さん、こんにちは。
おそらくこの記事を読んでる方は、SQLAlchemyを触り始めたばかりの方だと思います。
そんな方向けに今回は、SQLAlchemyでモデルを書くときに、ENUMってどのように書くのかについてです。
SQLAlchemyモデルでENUMの記載方法
さっそくですが。こんな感じで書けます。
import enum
from sqlalchemy import (
Column,
Integer,
String,
Enum,
)
from db.base_class import Base
class UserType(str, enum.Enum):
professor = "professor"
student = "student"
other = "other"
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
role = Column(Enum(UserType), nullable=False)
name = Column(String(100), nullable=False)
ENUMの定義自体は、以下のようにクラスを用意してあげます。
ここでは、モデルのインスタンスから文字列で値を受け取りたいので、
このようにしてます。
class UserType(str, enum.Enum):
professor = "professor"
student = "student"
other = "other"
あとは、対象のカラムに以下のようにセットするだけです。
role = Column(Enum(UserType), nullable=False)
でわでわ。