【问题标题】:IN clause in pony orm query小马 orm 查询中的 IN 子句
【发布时间】:2017-11-21 15:23:39
【问题描述】:

如何在小马 orm 中使用子查询进行类似查询

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

换句话说。我想做类似的事情

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.sqltranslation.IncomparableTypesError: Incomparable types 'int' and 'mastertable' in expression: ct.masterno in master_result

master_result 在哪里

print(type(master_result))

【问题讨论】:

    标签: python ponyorm


    【解决方案1】:

    是的,通过 Pony API,您将从 select()filter() 函数中获得 QueryResult 对象。如果您想从该查询中获取实体,您可以更改您的行 master_result = target_model.mastertable.select()\ .filter(lambda mt: mt.recorddate > DATE)

    master_result = target_model.mastertable.select()\ .filter(lambda mt: mt.recorddate > DATE)[:] <- this will fetch objects

    您可以将QueryResult 转换为list 的另一种方式,例如results = list(master_result)。您也可以遍历 QueryResult 对象,您将获得 Entity 对象作为项目。 for mastertable in mastertable.select(): mastertable.recordtable = *smth*

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 2016-06-13
      • 2015-11-27
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2010-10-23
      相关资源
      最近更新 更多