在 SQL Alchemy 中,每个会话查询都会返回一个 Query 类的实例。
我试图像这样评估查询,期望它的行为类似于列表:
if session.query(...).filter_by(...):
但是它总是评估为真,所以我最终改为这样做:
if session.query(...).filter_by(...).count():
这似乎有点啰嗦和不正确。有没有更好的方法来检查查询是否会返回结果?
在 SQL Alchemy 中,每个会话查询都会返回一个 Query 类的实例。
我试图像这样评估查询,期望它的行为类似于列表:
if session.query(...).filter_by(...):
但是它总是评估为真,所以我最终改为这样做:
if session.query(...).filter_by(...).count():
这似乎有点啰嗦和不正确。有没有更好的方法来检查查询是否会返回结果?
查询在何时发出 SQL 时必然是保守的,这就是为什么它没有__len__()
方法的原因。
通常,如果我想查看查询是否返回结果,我会调用.first()
,以便至少数据库只需要找到一行而不是所有行来确定.count()
.