3

我正在尝试使用 SQLAlchemy 学习和进步。今天我想了解它引发的异常。

我正在开发一个基于 Pyramid 的项目,MySQL 服务器(InnoDB)和 SQLAlchemy。

我试图排除所有错误,因为NoResultFound错误不会在控制台中引发或打印。所以我除了exc.SQLAlchemyError

当我查询我的表并且没有找到任何结果时,它不会引发或捕获或除任何东西之外并继续运行。

问题:

  1. 我该如何以及应该如何查询.all()or .one(),并处理没有返回任何行的问题?
  2. 我该如何以及应该如何处理其他与 SQL 或系统相关的错误?我想记录它们并观察它们以解决问题。

我的代码是:

try:
    query = Session.query(MyTable).filter(Terms.column == my_string).all()
except exc.SQLAlchemyError, e:
    print e
    return False

(而不是exc.SQLAlchemyError,我首先尝试了NoResultFound,e)

4

1 回答 1

8

事实上,如果没有找到记录,这段代码不会引发异常。因此,您应该抛出自己的异常:

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')
于 2012-10-11T15:54:55.457 回答