我收到了这段代码..
.....
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
如果任务表不存在,那么我会收到类似
的警告create_database.py:11: Warning: Unknown table 'tasks'
但如果表存在,那么我不会得到那个警告。 奇?
答案 0 :(得分:22)
捕获MySQLdb.Warning对我不起作用,所以我找到了另一种抑制警告的方法:
import warnings
warnings.filterwarnings("ignore", "Unknown table.*")
您可以使用您想要抑制的任何内容编辑第二个参数。
答案 1 :(得分:11)
避免Mysql警告的最优雅方法:
from warnings import filterwarnings
import MySQLdb
filterwarnings('ignore', category = MySQLdb.Warning)
答案 2 :(得分:6)
这是非常正确的行为。如果表存在,那么它就被删除了。如果它不存在那么你会得到警告异常,它与错误不同 - 你可以自由地忽略它并且不会发生任何坏事,但你必须抓住它它允许你的脚本继续。
编辑:
为了防止警告冒泡,只需将其捕获为任何其他例外:
try:
[some code]
except MySQLdb.Warning:
[exception handling code]