2013-01-17 2 views
1

누군가가 이것을 보여 줄 수 있을까요? 어떻게 이것을 sqlalchemy에서 수행 할 수 있습니까?sqlalchemy를 사용할 때 사전 조인을 수행하는 방법은 무엇입니까?

SELECT 
    * 
FROM animals a 
INNER JOIN species s 
    ON (s.species_id=a.id AND s.type='mammals') 
LIMIT 1; 

나는 많은 다른 것들을 시도했지만 이상한 결과가 계속 나타납니다. 누군가가 이것을 도와 주시면 크게 감사하겠습니다.

내가했던 일부 코드 :

result = session.query(Animal).\ 
    join((Species, (Species.species_id==Animal.id)), (Species, (Species.type=='mammals'))) 
    .all() 

나 제공이 물론 :

SELECT 
     * 
    FROM animals 
    INNER JOIN species 
     ON (species.species_id=animals.id) 
    INNER JOIN species 
     ON (AND species.type='mammals') 
    LIMIT 1; 

그러나 이것은 정확히 내가 원하는 없습니다.

미리 감사드립니다.

-e

답변

0

당신은 and_이 필요합니다

from sqlalchemy.sql import and_ 

result = session.query(Animal).join(Species, and_(
    Species.species_id == Animal.id, 
    Species.type == 'mammals', 
)).all() 

편집 :이 SQLAlchemy의 0.7에서 사용할 수 join 이후의 "2 개의 인수를 호출하는 형태"를 사용하고 있습니다.

관련 문제