从sqlalchemy获取第一行

我有以下查询:

profiles = session.query(profile.name).filter(and_(profile.email == email, profile.password == password_hash))

如何检查是否有行,如何只返回第一行(如果有匹配项,则只能返回一行)?

回答:

使用 query.one()得到之一,正是一个结果。在所有其他情况下,它将引发你可以处理的异常:

from sqlalchemy.orm.exc import NoResultFound

from sqlalchemy.orm.exc import MultipleResultsFound

try:

user = session.query(User).one()

except MultipleResultsFound, e:

print e

# Deal with it

except NoResultFound, e:

print e

# Deal with that as well

还有query.first(),它将为你提供可能的第一个结果,而不会引发这些异常。但是,由于你要处理没有结果或超出你的想象的情况,query.one()因此正是你应该使用的方法。

以上是 从sqlalchemy获取第一行 的全部内容, 来源链接: utcz.com/qa/423043.html

回到顶部