我编写了这个循环,使用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()
答案 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])