知道 sqlalchemy 过滤器何时找到某些东西

我试图弄清楚如何确定我的 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

但是当我知道没有返回任何内容时,它似乎永远不会出错?我的逻辑完全混乱了吗?“双重检查”是首选方式吗?还是我没有使用异常?


白板的微信
浏览 150回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python