如果没有使用数据库查询获取结果,如何收到错误?

时间:2012-10-11 15:47:40

标签: python mysql sqlalchemy pyramid

我正在尝试用SQLAlchemy学习和进步。今天我想了解它引发的例外情况。

我正在开发基于金字塔的项目,MySQL服务器(InnoDB)和SQLAlchemy。

我正在尝试除了NoResultFound错误之外的所有错误都不会在控制台中引发或打印。所以我除了exc.SQLAlchemyError

当我查询我的表并且没有找到结果时,它不会引发或捕获或除了任何其他任何内容并继续运行。

问题:

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

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

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

1 个答案:

答案 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')