我在pymssql中使用sqlserver,发现一个特别复杂的SELECT查询偶尔会被选为死锁的受害者。因此,我将它包装在while循环中,以便在发生这种情况时重试事务,大致如下所示:
while True:
try:
cursor.execute('SELECT .......')
count_row = cursor.fetchone();
break
except Exception, tec:
print "Got error: %s" % (tec)
time.sleep(1)
cursor.execute('UPDATE .........')
self.conn.commit()
它似乎可以工作-如果SELECT遇到死锁,那么它将暂停一秒钟,再次重试并获得正确的答案。但是,每次发生时,以下UPDATE语句总是失败:
^{pr2}$UPDATE语句不在while循环中,所以我不知道它为什么失败。当SELECT没有达到死锁条件时,它工作得很好,所以我认为这与从错误中恢复有关。在
有什么想法吗?在
目前没有回答
相关问题 更多 >
编程相关推荐