当数据库查询未获取任何结果时,如何获取错误?

2024-06-17 12:05:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习和提高与SQLAlchemy。今天我想了解一下它引发的异常。

我在做一个基于金字塔的项目,MySQL服务器(InnoDB)和SQLAlchemy。

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

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

问题:

  1. 我该如何查询.all().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)


Tags: 项目服务器sqlsqlalchemy系统错误mysqlall
1条回答
网友
1楼 · 发布于 2024-06-17 12:05:42

实际上,如果找不到任何记录,此代码不会引发异常。因此,你应该抛出自己的例外:

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

相关问题 更多 >