python - 在 Python 中捕获 MySQL 警告

标签 python mysql

我想在 Python 中捕获并记录 MySQL 警告。例如,如果您提交 'DROP DATABASE IF EXISTS database_of_armaments',MySQL 会向标准错误发出警告。当不存在这样的数据库时。我想捕捉并记录它,但即使在 try/else 语法中,警告消息仍然会出现。

try/except 语法确实会捕获 MySQL 错误(例如,提交像 'DRP DATABASE database_of_armaments' 这样的错字)。

我已经尝试过 <<except.MySQLdb.Warning>> - 没运气。我查看了警告模块,但不明白如何将其合并到 try/else 语法中。

具体来说,我如何使以下(或类似的)工作。

GIVEN:数据库“database_of_armaments”不存在。

try:
    cursor.execute('DROP DATABASE IF EXISTS database_of_armaments')
except: <<WHAT DO I PUT HERE?>>
    print 'There was a MySQL warning.' 
    <<AND what goes here if I want to get and manipulate information about the warning?>>

更新:

感谢您的评论。我试过这些,但它们没有用——但我一直在使用我为连接编写的 DatabaseConnection 类,以及它的 runQuery() 方法来执行。当我在类外创建连接和游标时,try/except 异常捕获了“编程错误”,并且除了 MySQLdb.ProgrammingError 之外的工作如宣传的那样。

所以现在我必须弄清楚我的类编码有什么问题。

感谢您的帮助。

最佳答案

按照这些步骤操作。

  1. 使用 except Exception, e: print repr(e) 运行它。

  2. 看看你得到了什么异常。

  3. Exception改成你实际得到的异常。

另外,请记住异常 e 是一个对象。你可以打印dir(e)e.__class__.__name__等,看看它有什么属性。

此外,您可以在 Python 中的 >>> 提示符处以交互方式执行此操作。然后,您可以直接操作该对象——无需猜测。

关于python - 在 Python 中捕获 MySQL 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647805/

相关文章:

mysql - 统计sql中相同列的数量并将其输出为 View

MySQL 在 where 子句中给出未知列错误

python - 添加按钮时 tk 窗口变小

python - python 中的 (**) 和 (<<) 有什么区别?

python - redis py 和 hgetall - 为什么键值有一个 b""?

mysql - 显示从现在到 XX 天之间的 MySQL DOB 记录

python - 我试图确定某个单词是否存在(无论大小写),但想根据大小写给出单独的响应

python - python中的空类大小

mysql - 无法使用 JOIN 更新特定记录

mysql - WordPress:如果其他列具有特定值,如何在 sql 列中查找字符串