在pymssq中重复死锁查询后更新失败

2024-05-20 20:25:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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没有达到死锁条件时,它工作得很好,所以我认为这与从错误中恢复有关。在

有什么想法吗?在


Tags: trueexecute情况update语句select事务cursor