프로그래밍/database

sqlAlchemy, Foreign Key, relationship, remote_side 정리

콘파냐 2022. 1. 8. 14:22
반응형

문서가 너무 방대해서 다 이해하지 못한채로 대략 정리한다.

sqlAlchemy는 컬럼에 Foreign Key를 설정한 후 orm을 위한 관계 설정을 relation 함수로 한다.

relation 함수는 기본적으로 Foreign Key는 한개로 가정하므로 Foreign Key 설정된 컬럼을 지정할 필요가 없다.

그러나 테이블 내에서 Foreign Key를 2개이상 사용할 경우는 지정해야한다.

지정하는 방법은 relation 함수에서 primaryjoin 설정 또는 foreign_keys 를 설정하는 방법인 듯 하다.참조, 2개 이상의 Foreign key

remote_side는 자기참조 관계에서 primary key 지정에 사용되는 것 같다. 지정은 반드시 "자신의모델(클래스명).primaykey컬럼" 을 한다. 그렇지 않으면 이상한 에러 발생한다고 한다. (위 스택오버플로 링크 참조)

relationship의 첫 번째 인자의 값은 모델 클래스 이름 또는 모델 클래스 문자열로 지정한다. 자기 참조일 때는 자기 자신의 클래스 이름을 참조할 수 없기 때문에 클래스 이름을 문자열로 전달한다.

back_populatesbackref는 모두 자신의(테이블)의 별칭을 지정하는 것 같다. 양방향back_populates 인지 단방향backref 으로 각각 사용되는 듯.

반응형