我正在尝试用SQLAlchemy学习和进步。今天我想了解它引发的例外情况。
我正在开发基于金字塔的项目,MySQL服务器(InnoDB)和SQLAlchemy。
我正在尝试除了NoResultFound
错误之外的所有错误都不会在控制台中引发或打印。所以我除了exc.SQLAlchemyError
。
当我查询我的表并且没有找到结果时,它不会引发或捕获或除了任何其他任何内容并继续运行。
问题:
.all()
或.one()
并进行处理
没有返回任何行的问题?我的代码是:
try:
query = Session.query(MyTable).filter(Terms.column == my_string).all()
except exc.SQLAlchemyError, e:
print e
return False
(而不是exc.SQLAlchemyError,我首先尝试过NoResultFound,e)
答案 0 :(得分:7)
实际上,如果没有找到记录,此代码不会引发异常。所以你应该抛出自己的异常:
import logging
try:
records = Session.query(MyTable).\
filter(Terms.column == my_string).all()
if len(records) == 0:
raise MyException('No records found')
except MyException, e:
logging.info('No records found')
except exc.SQLAlchemyError, e:
logging.exception('Some problem occurred')