Sqlalchemy超出了最大递归深度

时间:2017-01-13 01:08:32

标签: python recursion sqlalchemy

我编写了这个循环,使用Sqlalchemy动态构建一个select语句,试图减少数据库命中率。

我不明白为什么在调用int fps = 1000/30; int interval = 0; while(running){ interval++; Sleep(fps); if(interval == 30){//every more or less 1 sec draw(); } } 时我的最大递归深度超出错误。

当我将递归深度max更改为2000时,此查询可以正常工作。

代码:

query.all()

1 个答案:

答案 0 :(得分:2)

目前您正在for循环中以递归方式构建以下嵌套逻辑条件

or(...or(or(false, condition1), condition2), ... conditionN)

相反,如果你表达了相同的条件:

or(condition1, condition2, ... conditionN)

使用列表理解&解包,避免递归。

def condition(model, asset):
    return and_(model.version == asset.get("version"),
                model.id == asset.get("id"),
                model.account_id == account_id)

filter_cond = or_(*[condition(model, asset) for asset in assets])