2

在 except 子句中减少变量时是否有任何特殊行为? sid一直递增,直到它第一次进入异常子句,然后它在for循环的剩余时间内保持相同的值。

105 次尝试中有 7 次抛出异常

没有打印输出“Fehlercode:”,错误代码

这是我的代码:

for bid in range(bidStart, bidEnd + 1):
    for syn in getSynsProBeitrag(bid):
        try:
            sid += 1
            query = "INSERT INTO zuord (bid, hid, sid) VALUES(%s, %s, %s)"
            cursor.execute(query, [bid, hid, sid])
            query2 = "INSERT INTO synonyme (synonym) VALUE (%s)"
            cursor.execute(query2, syn)

        except MySQLdb.IntegrityError, message:
            errorcode = message[0]      
            if errorcode == 1062:       
                sid -= 1
                print sid
            else:
                print "Fehlercode:", errorcode

已解决:在 query2 抛出它的第一个异常之后,第一个查询也导致了一个(相同的)IntegrityError,然后它就像科琳说的那样来回移动

4

2 回答 2

1

好吧,你在 except 子句中递减它,然后在 try 中递增它,所以它只是来回移动......如果它第一次失败,它会继续失败。

例如

try:
1
try:
1+1=2 ->fail->id-1=1
try:
1+1=2 ->fail->id-1=1
try:
1+1=2 ->fail->id-1=1
try:
1+1=2 ->fail->id-1=1
....

等等

如果您试图跳过失败的 id,请不要减少它。

于 2012-11-20T18:55:16.463 回答
0

在 except 子句中递减时没有任何特殊行为。

是不是因为同样的异常不断被抛出,所以它不断递减?我注意到您只有在收到相同的错误代码时才将其打印出来,您是否曾经收到“Fehlercode:错误代码”的打印输出?

于 2012-11-20T18:56:27.603 回答