sqlalchemy.orm.RelationshipProperty.Comparator.any(criterion=None, **kwargs)
生成一个表达式,使用exists根据特定条件测试集合。
像这样的表达:
1 | session.query(MyClass).filter( |
将生成如下查询:
1 | SELECT * FROM my_table WHERE |
因为Comparator.any()使用关联子查询,查询大表时它的性能不如使用join好。
Comparator.any()对于测试空集合特别有用:
1 | session.query(MyClass).filter( |
将生成:
1 | SELECT * FROM my_table WHERE |
Comparator.any()仅对集合有效,即有uselist=True的relationship()。对于标量引用,要使用Comparator.has()。
sqlalchemy.orm.RelationshipProperty.Comparator.has(criterion=None, **kwargs)
生成一个表达式,使用exists根据特定条件测试标量引用。
像这样的表达:
1 | session.query(MyClass).filter( |
将生成如下查询:
1 | SELECT * FROM my_table WHERE |
因为Comparator.has()使用关联子查询,查询大表时它的性能不如使用join好。
Comparator.has()仅对标量引用有效,即有uselist=False的relationship()。对于集合引用,要使用 Comparator.any()。
参考文档
https://docs.sqlalchemy.org/en/13/orm/internals.html#sqlalchemy.orm.RelationshipProperty