我想在Python中捕获并记录MySQL警告.例如,如果'DROP DATABASE IF EXISTS database_of_armaments'
在没有此类数据库时提交,MySQL会向标准错误发出警告.我想抓住这个并记录它,但即使在try/else语法中,仍然会出现警告消息.
try/except语法确实捕获了MySQL错误(例如,提交类似的错字'DRP DATABASE database_of_armaments'
).
我已经尝试过<
- 没有运气.我查看了警告模块,但不明白如何将其合并到try/else语法中.
具体来说,我如何使以下(或类似的东西)工作.
GIVEN:数据库'database_of_armaments'不存在.
try: cursor.execute('DROP DATABASE IF EXISTS database_of_armaments') except: <> print 'There was a MySQL warning.' < >
更新:
感谢您的评论.我试过这些并且它们没有用 - 但是我一直在使用我为连接编写的DatabaseConnection类,以及要执行的runQuery()方法.当我在类外部创建一个连接和光标时,try/except异常捕获了"编程错误",除了MySQLdb.ProgrammingError工作的广告.
所以现在我必须弄清楚我的类编码有什么问题.
谢谢您的帮助.
跟着这些步骤.
运行它except Exception, e: print repr(e)
.
看看你得到了什么例外.
更改为Exception
您实际获得的异常.
另外,请记住,异常e是一个对象.您可以打印dir(e)
,e.__class__.__name__
,etc.to看看它有哪些属性.
此外,您可以>>>
在Python 的提示符下以交互方式执行此操作.然后你可以直接操纵对象 - 不要猜测.
你尝试过这样的事吗?
try: cursor.execute(some_statement) except MySQLdb.IntegrityError, e: # handle a specific error condition except MySQLdb.Error, e: # handle a generic error condition except MySQLdb.Warning, e: # handle warnings, if the cursor you're using raises them