我编写了这个循环来动态构建一个使用Sqlalchemy的select语句,试图减少数据库命中 .
调用 query.all()
时,我没有超出最大递归深度错误 .
当我将递归深度max更改为2000时,此查询工作正常 .
码:
filter_cond = False
for asset in assets:
filter_cond = or_(filter_cond, and_(model.version == asset.get("version"),
model.id == asset.get("id"),
model.account_id == account_id))
query = session.query(model).filter(filter_cond)
result_set = query.all()
1 回答
目前,您正在for循环中递归地构建以下嵌套逻辑条件
相反,如果你表达了相同的条件:
使用列表理解和解包,避免递归 .