기술스택을 쌓아보자/SQL
TIL 2022 05 10 - sqlalchemy의 cascade, relationship [TODAY I LEARN]
소리331
2022. 5. 11. 00:47
반응형
[TIL 2022 05 10]
오늘은 sqlalchemy의 cascade option을 사용하고, 관련 개념을 익혀보았다.
cascade적용하는법
- cascade를 relationship()을 통해 지정한다.
- relationship()의 첫번째 인자는 참조할 모델명이다.
- cascade의 default는 save-update and merge 이기 때문에, delete나 delete-orphan은 지정해주어야한다.
class Order(Base):
__tablename__ = 'order'
items = relationship("Item", cascade="all, delete-orphan")
customer = relationship("User", cascade="save-update")
backref란?
- 한국어로는 역참조. 사실 이것도 잘 와닿진 않는다.
- 값에 직접 접근하는 것이 아니라 주소를 이용해 간접적으로 접근하는 것
Relationship은 어떤 방식으로 작동되는가?
- relationship은 코드 상에서 편리하게 다루기 위한 도구이다.
- relationship을 만들면, 테이블 칼럼이 생기는 것은 아니다.
- 두 모델(아마도 테이블)간의 관계를 왔다 갔다 할 수 있게 해주는 도구이다.(backref 사용시)
- 이런게 가능하다.
- table a와 b에 relationship을 생성(b는 a의 pk를 fk로 사용)
- python 코드 상에서 만약 a에 대한 객체를 생성하면, b를 연동하여 한번에 갱신하는 것이 가능
오늘 본 문서
마지막 문서는 엄청나다!
반응형