python - 异常处理: exception being handled multiple times

标签 python mysql exception mysql-python

我有一个 python 脚本,它从互联网(从 URL 列表)下载某些数据并将其存储在 MySQL 数据库中。我的代码是这样的:

try:
    con = mdb.connect(host = 'localhost', user = 'root', passwd = 'gatech', db ='SpecialProb', charset = 'utf8');
    cur = con.cursor()
    print " Database Connection Parameters set"
except mdb.Error, e:  
    print "Error %d: %s" % (e.args[0],e.args[1])
    sys.exit(1)
try:
    for item in listURLs[index:]:
        try:
            r2 = requests.get(item)
        except:
            print "Could not fetch data"
            print "Exception: ", sys.exc_info()[0]
            continue

         ## Some code to fetch Name, ID from the internet, which I have tested and which works correctly. ##
         try:
             cur.execute("INSERT into TABLENAME (NAME, ID" 
             ") VALUES (%s, %s)",
             (totalName, ID))

             print("Value inserted in database.\n")
             countInsert += 1;
             con.commit() 
         except mdb.IntegrityError:
             print "Most likely cause: Database already contains this entry."
             print "Message from system: "
             print "Error %d: %s\n" % (e.args[0],e.args[1])
             continue
except:
    print "'For loop exception: ", sys.exc_info()[0]        
    sys.exit(0)

我获取的数据可能是重复的,我不希望将重复的数据插入到数据库中,并且代码应该在下一次迭代中 eclipse 刻下一个数据而不是存储数据。所以我有 except mdb.IntegrityError: 行来处理重复项。

但是,在捕获重复条目的异常后,代码不会继续执行下一次迭代,而是转到我为 for 循环设置的 except 。 这是我得到的:

Most likely cause: Database already contains this entry. 
Message from system:
'For loop exception:  <type 'exceptions.NameError'>

为什么会发生这种情况?我该如何防止这种情况发生?

非常感谢!

最佳答案

您的 e 不会被定义,从而导致 except block 中出现异常。 使用 mdb.IntegrityError,e 就像您对 所做的那样,除了 mdb.Error, e

关于python - 异常处理: exception being handled multiple times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21744621/

相关文章:

java - 包装第三方库时包装异常

java - python 中 getInputStream() 和 getOutputStream() 等价的是什么?

mysql - 以编程方式获取自动增量主键列

python - 查找字符串中的时间戳

C# 将 MySQL 结果拉入数组

php - 获取日期时间当天的所有结果

C++ 异常抛出语法

java - 检查异常不会抛出并转为 RuntimeException

python - 如何使用python在Tensorboard上显示模型的权重和偏差

python - 如何向文件添加文本而不删除已有内容?