处理 mysql 个死锁

Handling mysql deadlock

我有以下 SQL 声明:

self.cursor.execute('''INSERT INTO main_iteminstance (...) VALUES (...)''')

此操作在两个小时的脚本中运行了数百万次。然而,大约每十个脚本运行一次,它就会陷入死锁:

OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction')

我该如何处理?我的想法是执行以下操作 --

while True:
    try:
        self.cursor.execute('''INSERT INTO main_iteminstance (...) VALUES (...)''')
    except MySQLdb.OperationalError:
        continue
    else:
        break

这是最好的模式吗?或者有更好的方法吗?

你能把你的价值观分解成这样吗?

INSERT INTO main_item_instance (...) VALUE (...), (....), ....

你必须单独插入还是可以在脚本末尾插入一大段?