我正在使用sqlalchemy,我有一个位置模型和一个过程模型。地方和程序之间是一种多对多的关系,每个地方都有多个程序,一个程序可以由多个地方来完成。
目前,我有一个简单的查询,以便我可以搜索所有的地方,有一个单一的过程。
for place in session.query(Place).filter(Place.procedures.any(Procedure.name == searchProcedure)):
这是正确的,我的查询当前将返回所有具有所需搜索过程的位置。
我想改变它,使我有多个搜索过程,我只返回任何地方,有所有查询的搜索过程。
我有一个工作的解决方案,使用for循环来运行多个过滤器
placeResults = session.query(Place)
for searchProcedure in proceduresQuery:
placeResults = placeResults.filter(Place.procedures.any(Procedure.name == searchProcedure))
for place in placeResults:
#do desired work with found places here
使用sqlalchemy(或一般的sql)有更好的方法来实现这一点吗?我相信可能有一个更短/更快的解决方案涉及连接,但我不确定。
谢谢!
1条答案
按热度按时间uujelgoq1#
至少,如果程序数量相对较少,您可以
and_
在您的.filter
: