我试图弄清楚如何确定我的 sqlalchemy 过滤器调用是否找到了某些东西,以了解我是否应该迭代结果。
我能弄清楚如何做到这一点的唯一另一种方法是先调用:
ld = ld=LunchDay.query.filter(and_(func.DATE(LunchDay.timestamp == datetime.date.today()), LunchDay.status==1)).first()
那么如果 ld 是 None 什么也没有找到。但如果是这种情况,我无法遍历所有找到的内容,因此我必须再次调用:
ld = ld=LunchDay.query.filter(and_(func.DATE(LunchDay.timestamp == datetime.date.today()), LunchDay.status==1))
我认为必须有更好的方法,我认为如果没有找到任何东西,过滤器会抛出异常,所以我确实尝试了这个(在 shell 中):
try:
ld=LunchDay.query.filter(and_(func.DATE(LunchDay.timestamp == datetime.date.today()), LunchDay.status==1))
#do stuff with results
except sqlalchemy.orm.exc.NoResultFound:
#SHOW THE ERROR
但是当我知道没有返回任何内容时,它似乎永远不会出错?我的逻辑完全混乱了吗?“双重检查”是首选方式吗?还是我没有使用异常?
相关分类