首页 > 解决方案 > Python - mysql - 记录生成警告的查询

问题描述

我有进行 mysql 调用的 python 代码。它记录所有 mysql 错误(并在谷歌聊天中向我发送通知)。但是,不会报告诸如此类的警告,这是有道理的,因为它们不是警告。但是,我希望在出现警告时记录 mysql 语句,以便解决根本问题。找到这些警告并将它们写入日志的最佳方法是什么(使用错误的 mysql 语句

/usr/local/lib/python3.4/dist-packages/pymysql/cursors.py:170: Warning: (1366, "Incorrect string value: '\\xF3n Cha...' for column 'recipient-name' at row 1")

.

try:
     cursor.execute(query_string, field_split)
         db.commit()
     except pymysql.err.InternalError as e:
        logger.warning('Mysql Error : %s', e)
        logger.warning('Statement : %s', cursor._last_executed)
        string_google= str(e.args[1] + ' - ' + cursor._last_executed)
        googlechat(string_google)
        return #exit rather then marking report run good

标签: pythonmysqlloggingpymysql

解决方案


使用警告模块中的catch_warnings。它是一个上下文管理器,可为您提供警告列表。代码看起来像这样:

with warnings.catch_warnings(record=True) as w:
    function_that_triggers_warning()
    if w:
         logging_function(w[-1])

推荐阅读