Python和MySQLdb - 使用DROP TABLE IF EXISTS似乎抛出异常

时间:2010-11-10 10:54:26

标签: python mysql

我收到了这段代码..

.....
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'

但如果表存在,那么我不会得到那个警告。 奇?

3 个答案:

答案 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]