2017-11-21 7 views
0

어떻게 다른 단어에서

SELECT * 
FROM child_table 
WHERE child_table.masterno IN (SELECT masterno 
        FROM mastertable 
        WHERE mastertable.recorddate > SYSDATE -1) 

같은 쿼리에 대한 조랑말 ORM에서 하위 쿼리를 사용할 수 있습니다. 내가 master_result이

print(type(master_result)) 

< 어디 오류

pony.orm.sqltranslation.IncomparableTypesError: Incomparable types 'int' and 'mastertable' in expression: ct.masterno in master_result 

있어

master_result = target_model.mastertable.select()\ 
       .filter(lambda mt: mt.recorddate > DATE) 

output = target_model.child_table.select()\ 
      .filter(lambda ct: ct.masterno in master_result) 

처럼 뭔가를해야만하고 싶어 'pony.orm.core.QueryResult'>

답변

0

예, Pony API를 사용하면 QueryResult 개체를 select() 및에서 얻을 수 있습니다.기능. 해당 쿼리의 개체를 원한다면 당신은
master_result = target_model.mastertable.select()\ .filter(lambda mt: mt.recorddate > DATE)[:] <- this will fetch objects

에 당신이 results = list(master_result)처럼 listQueryResult 캐스팅 수있는 또 다른 방법은 당신의 라인 master_result = target_model.mastertable.select()\ .filter(lambda mt: mt.recorddate > DATE)
을 변경할 수 있습니다. 또한 QueryResult 객체를 반복 할 수 있으며 Entity 객체를 항목으로 가져올 수 있습니다. for mastertable in mastertable.select(): mastertable.recordtable = *smth*