프로그래밍/Python

[SQLAlchemy] 외래키 여러 릴레이션 필터

Beginner:) 2021. 6. 9.
320x100

아래와 같은 모델이 있다고 가정

class A(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128), index=True)
    b_id = db.Column(db.Integer, db.ForeignKey('B.id'))
    b = db.relationship('B', backref='B.id', primaryjoin='B.id=A.b_id')

class B(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128), index=True)
    c_id = db.Column(db.Integer, db.ForeignKey('C.id'))
    c = db.relationship('C', backref='C.id', primaryjoin='B.id=B.c_id')

class C(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128), index=True)

 

B를 조회하는 방법은 

bs = B.query.filter(B.c_id == "1").all()

 

A를 조회하는 방법은

cs = A.query.filter(A.b.has(B.c.has(C.id == "1"))).all()

 

 

 

반응형

댓글