joh*_*ohn 29 python sqlalchemy pyramid
我正在运行基于查询的其他ID的查询.我遇到的问题是,有时查询将找不到结果.而不是让整个程序崩溃,我如何检查结果是否为None?
这是我的查询:
sub_report_id = DBSession.query(TSubReport.ixSubReport).filter(and_(TSubReport.ixSection==sectionID[0], TSubReport.ixReport== reportID[0])).one()
Run Code Online (Sandbox Code Playgroud)
当代码执行并且没有找到结果时,我得到一个NoResultFound异常
NoResultFound: No row was found for one()
Run Code Online (Sandbox Code Playgroud)
如果没有结果,有没有办法跳过查询?
在SO上找到解决方案(之前找不到) 从sqlalchemy获取第一行
Lyn*_*nch 48
使用first()功能而不是one().如果没有结果,它将返回None.
sub_report_id = DBSession.query(TSubReport.ixSubReport).filter(and_(TSubReport.ixSection==sectionID[0], TSubReport.ixReport== reportID[0])).first()
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档
yth*_*mar 32
你也可以使用one_or_none(),None当没有找到结果时返回,并且语法清晰first().无需错误处理.
ref:one_or_none()
kyl*_*e.a 11
SQLAlchemy如何知道如果不进行查询就不会有结果?
您应该捕获异常并处理它:
from sqlalchemy.orm.exc import NoResultFound
try:
sub_report_id = DBSession.query(TSubReport.ixSubReport).filter(and_(TSubReport.ixSection==sectionID[0], TSubReport.ixReport== reportID[0])).one()
except NoResultFound:
sub_report_id = [] # or however you need to handle it
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27594 次 |
| 最近记录: |