sqlAlchemyでmany to many(多対多)の構造のDBを作成し、紐づくテーブルのデータも含めてデータを取得したいのですがそのやり方がわからず困っています
具体的にはparentとchildテーブルがあり、親は複数人子がおり、子も複数人親がいる状態のとき、
親の情報を取得したときに子の配列を取得したいです
ソースは以下です
model.py
python
1association_table = Table('association', Base.metadata, 2 Column('parent_id', ForeignKey('parent.id'), primary_key=True), 3 Column('child_id', ForeignKey('child.id'), primary_key=True) 4) 5 6class Parent(Base): 7 __tablename__ = 'parent' 8 id = Column(Integer, primary_key=True) 9 children = relationship( 10 "Child", 11 secondary=association_table, 12 back_populates="parents") 13 14class Child(Base): 15 __tablename__ = 'child' 16 id = Column(Integer, primary_key=True) 17 parents = relationship( 18 "Parent", 19 secondary=association_table, 20 back_populates="children")
query.py
Python
1from sqlalchemy.orm import Session 2from model import * 3 4def retreive_parent(id: int, db: Session): 5 parent = db.query(Parent).filter(Parent.id == id).first() 6 return parent
期待する出力
{ "id": 1, "children": [{"id": 1},{"id": 2},{"id": 3}] }
実際の出力
{ "id":1 }
なんとなくquery時にjoinをするのかなと思ってchildテーブルやassosiation_tableをjoinしてみましたが上手くいきません
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/09 01:04