프로젝트 진행중, SQLAlchemy에서 서로 다른 두 개의 테이블(books, rent)을 join해야 하는 상황.
나의 엄청난 고민이 보이는가... aka 삽질....ㅎ
주석으로 달린 코드들이 이것 저것 시도해 본 것이다. 그리고 결국 공식 api 문서를 참고해서 해결!!!
#Books & Rent 모델을 inner join 하는 심플(?)한 과정
rent_list = Books.query.join(Books.rent)
.filter(Rent.user_id == session.get('login')).all()
기존 sql 문법과는 달라서 신기했던 부분이 Books.rent
이 부분인데,
서로 다른 두 모델을 join해 주는 조건에는 두 테이블을 저렇게 " . " 으로 연결하기만 하면 된다고 한다.
왜 앞에 Books는 대문자로하고 rent는 소문자로 하는지 아직 이해 중이긴하지만.... join 쿼리가 돌아가는 순간 그 느꼈던 행복....ㅠㅠㅠ엉엉
공식 api문서를 링크로 걸어 놨으니 차분히 더 읽어 볼 예정이다.
삽질의 흔적을 영광스럽게 남깁니다. (모두 다 똑같은 쿼리를 의도한 것입니다)
----------------------틀린쿼리!!!
#rent_list = Books.query.join(Books.rent).filter(Rent.user_id == session.get('login')).all()
#rent_list = Books.query.join(Rent, Rent.book_id == Books.id).all()
#rent_list = Rent.query.filter(Rent.user_id == session.get('login')).join(Books, Rent.book_id == Books.id).all()
# rent_list = rent_list.query.filter(rent_list.user_id == session.get('login')).all()
# for rent in rent_list:
# print(rent)
#rent_list = db.session.query(Rent, Books).filter(Rent.book_id == Books.id).all()
#rent_list = Rent.query.filter(Rent.user_id == g.user.id).all()