概要
タイトルの通りです
環境
- macOS 11.7.4
- SQLAlchemy 2.0.7
サンプルコード
def list_user_by_sub_group_name(self, name: str) -> list[User]:
return (
self.db.query(User)
.join(Group, User.group_id == Group.id)
.join(SubGroup, Group.sub_group_id == SubGroup.id)
.filter(
SubGroup.name == name,
)
.all()
)
説明
User と Group と SubGroup を結合します
特定の SubGroup 名に所属する User 情報を取得します
db.query(User) の部分は最終的に取得したいテーブルのクラスを指定します
今回は User がほしいので db.query には User を指定します
join する場合には db.query で指定した User クラスと結合したいテーブルを指定します
先に Group と結合するので最初の join では Group を指定します
そして最後に SubGroup と join します
最後に
テーブル作成時の relation 時に join するキーを指定することもできます
その場合は join メソッドで結合するクラスだけを指定すれば OK です
0 件のコメント:
コメントを投稿