2017-11-21 3 views
0

Wie kann ich subquery in Pony ORM für Abfrage wieIN-Klausel in Pony orm Abfrage

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

In einem anderen Wort verwenden. Ich wollte somthing wie

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) 

tun bekam ich Fehler

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

wo master_result ist

print(type(master_result)) 

< 'pony.orm.core.QueryResult>

Antwort

0

Ja, von Pony API erhalten Sie QueryResult Objekt von select() und filter() Funktionen. Wenn Sie Personen aus dieser Abfrage haben wollen könnten Sie Ihre Linie ändern master_result = target_model.mastertable.select()\ .filter(lambda mt: mt.recorddate > DATE)
zu
master_result = target_model.mastertable.select()\ .filter(lambda mt: mt.recorddate > DATE)[:] <- this will fetch objects

andere Art und Weise Sie QueryResult zu list wie results = list(master_result) werfen können. Sie können auch über das QueryResult-Objekt iterieren, und Sie erhalten Entity-Objekte als Element. for mastertable in mastertable.select(): mastertable.recordtable = *smth*