반응형
[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를 연동하여 한번에 갱신하는 것이 가능
오늘 본 문서
마지막 문서는 엄청나다!
반응형
'기술스택을 쌓아보자 > SQL' 카테고리의 다른 글
[조각SQL] ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails 해결하기, 이미 생성된 테이블에 cascade 적용 (0) | 2022.05.17 |
---|---|
[조각SQL] 칼럼 이름 바꾸기 rename column (0) | 2022.05.11 |
[조각SQL, DB] CASE 구문을 알아보자! (0) | 2021.11.27 |
[조각SQL] COL의 명목변수 값 구하기/ SQL DISTINCT (0) | 2021.11.09 |
[조각DB] DB 테이블 리스트 조회/테이블 칼럼(열) 검색하기 (0) | 2021.10.27 |
댓글