Ask*_*ken 49 python sqlalchemy flask flask-sqlalchemy
我有以下查询:
profiles = session.query(profile.name).filter(and_(profile.email == email, profile.password == password_hash))
Run Code Online (Sandbox Code Playgroud)
如何检查是否有一行,如何返回第一行(如果匹配则应该只有一行)?
Luk*_*raf 88
使用 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
Run Code Online (Sandbox Code Playgroud)
还有query.first(),这将给你很多可能的第一个结果,而不会提出这些例外.但既然你想要处理没有结果或超出你想象的情况,query.one()那么你应该使用它.
Mar*_*eth 37
您可以first()在Query对象上使用该函数.这将返回第一个结果,如果没有结果则返回None.
result = session.query(profile.name).filter(...).first()
if not result:
print 'No result found'
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用one(),它将为您提供唯一的项目,但为具有零或多个结果的查询引发异常.
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
try:
result = session.query(profile.name).filter(...).one()
print result
except NoResultFound:
print 'No result was found'
except MultipleResultsFound:
print 'Multiple results were found'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58722 次 |
| 最近记录: |