2013-05-03 2 views
1

나는 외래 키로 인해 제약을받는 안전한 JOIN을 고려한다. 그리고 그것의 표적만을 언급하는 암묵적인 것.SQLAlchemy에서 안전한 (제약 조건) 암시 적 조인을 수행하는 방법은 무엇입니까?

SQLAlchemy에서 session.query(User).join(Addresse)은 SQLAlchemy가 사용자와 주소 간의 관계를 알고 있는지 여부에 따라 제약이 있거나 다를 수 있습니다.

때로는 복잡한 쿼리를 작성하고 모든 조인이 제약 조건이되는지 확인하려고합니다. 어떻게 확인할 수 있습니까? 마지막으로 참여하는 대한

session.query(addr_alias1).join(User).join(addr_alias2)

: SQLAlchemy의 나에게 암시 .join(table)는 외래 키를 찾을 수 없습니다 예외를 제공하면 나는 "복잡한 쿼리를위한"...

예를 최선을 싶습니다 지나치게 노골적인 방법은 .join(addr_alias2, User.addresses)이 될 것이지만, 내가 말했듯이, 암시 적 구문을 원한다.

+0

시도해 보셨습니까? ON 절이없는 a.join (b)을 말할 때, JOIN을 결정하기 위해 ForeignKey() 제약 객체에만 의존하며, 그렇지 않으면 예외를 발생시킵니다. – zzzeek

+0

어머나! 나는 실제로 무엇을 시도했는지 그리고 무엇을하지 않았는지에 대해 확신하지 못합니다.하지만 적어도 문서화 버그를 발견했습니다. :-P 문서/튜토리얼은 어떤 경우에도 조인 (join)과 같이 소리가납니다 (외래 키가있는 경우에만 제약 조건을받습니다). –

+0

여기에 워드 프로세서 : http://docs.sqlalchemy.org/en/rel_0_8/core/tutorial.html#using-joins "SQLAlchemy는 두 테이블을 조인하는 방법을 알아 냈습니다! 조인의 ON 조건은 호출됨에 따라, 이 자습서를 시작할 때 주소 테이블에 배치 한 ForeignKey 개체를 기반으로 자동 생성되었습니다. " - 무슨 문서를보고 있니? – zzzeek

답변

0

SQLAlchemy는 이미 그렇게합니다.

이 튜토리얼에서는 그렇지 않다고 제안하고 API 설명서에서이 문제를 해결하지는 않습니다.

+0

아마도 다큐멘터리 패치를 제출할 수 있습니다. –

관련 문제