python - 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
解决方案
使用警告模块中的catch_warnings。它是一个上下文管理器,可为您提供警告列表。代码看起来像这样:
with warnings.catch_warnings(record=True) as w:
function_that_triggers_warning()
if w:
logging_function(w[-1])
推荐阅读
- python-3.x - 通过 python 检查 azure data Lake Storage gen2 中是否存在文件
- angular - 可观察的返回空值
- string - Bash - 从字符串变量中仅提取日期和时间,排除其他周围文本
- javascript - 解决 iMacro Firefox 中页面“检查元素”中的控制台选项卡
- python - Matplotlib 标签重叠,因为数据太多
- python - 如何在批量插入期间在 PostgresSQL 中获取带有错误消息的行?
- javascript - 保持复选框未选中,直到 onclick 函数使用 AngularJS 返回 true
- android - Android Flutter 使用缓存引擎启动自定义活动
- android - 无法访问“TAG”:它在“FragmentActivity”中是私有的
- solr - 在 Solr 中按嵌套对象字段对文档进行排序