我有这个代码..
.....
try:
task_db.cursor.execute('DROP TABLE IF EXISTS `tasks`')
print "Affected: %d" % task_db.cursor.rowcount
except MySQLdb.Error, e:
print "Error ocurred: %s " % e.args[0]
print e
Run Code Online (Sandbox Code Playgroud)
如果任务表不存在,那么我会得到一个警告
create_database.py:11: Warning: Unknown table 'tasks'
Run Code Online (Sandbox Code Playgroud)
但如果表存在,那么我不会得到那个警告.奇?
tho*_*ask 22
捕获MySQLdb.Warning对我来说不起作用,所以我找到了另一种抑制警告的方法:
import warnings
warnings.filterwarnings("ignore", "Unknown table.*")
Run Code Online (Sandbox Code Playgroud)
您可以使用要抑制的任何内容编辑第二个参数.
小智 11
避免Mysql警告最优雅的方法:
from warnings import filterwarnings
import MySQLdb
filterwarnings('ignore', category = MySQLdb.Warning)
Run Code Online (Sandbox Code Playgroud)
这是完全正确的行为.如果表存在,那么它就被删除了.如果它不存在则会出现与错误不同的警告异常- 您可以自由地忽略它并且不会发生任何错误,但您必须捕获它以允许您的脚本继续运行.
编辑:
要防止警告冒泡,只需将其捕获为任何其他异常:
try:
[some code]
except MySQLdb.Warning:
[exception handling code]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10738 次 |
| 最近记录: |