Python 如何捕获pymssql死锁作为异常?
我们的一些数据挖掘工作陷入了僵局,失去了联系。挑战在于,我们希望在Python pymssql模块由于死锁而失败时捕获Python 如何捕获pymssql死锁作为异常?,python,sql-server,database-deadlocks,pymssql,Python,Sql Server,Database Deadlocks,Pymssql,我们的一些数据挖掘工作陷入了僵局,失去了联系。挑战在于,我们希望在Python pymssql模块由于死锁而失败时捕获 File "pymssql.pyx", line 465, in pymssql.Cursor.execute (pymssql.c:6572) OperationalError: (1205, 'Transaction (Process ID 113) was deadlocked on lock resources with another process and has
File "pymssql.pyx", line 465, in pymssql.Cursor.execute (pymssql.c:6572)
OperationalError: (1205, 'Transaction (Process ID 113) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.DB-Lib error message 20018, severity 13:\nGeneral SQL Server error: Check messages from the SQL Server\n')
我们已尝试将CURSOR.EXECUTE语句包装在try/except中,但它不会触发
try:
CURSOR.execute(query)
except (RuntimeError, TypeError, NameError):
print "RuntimeError: {0}".format(RuntimeError)
我们看到很多人的代码似乎正在捕获死锁,所以我们不确定为什么我们的代码没有捕获死锁
有没有关于如何抓住这一僵局的建议
当系统出现故障时,最好能发出扩音器或其他警报让我们知道。我认为:
try:
CURSOR.execute(query)
except pymssql.InterfaceError as e:
print "SQL Interface Error: "+str(e)
但我仍在等待死锁的情况发生,所以我不确定:)无论如何,下面将处理所有pymssql错误,包括1205死锁:
try:
CURSOR.execute(query)
except pymssql.Error as e:
print "SQL Error: "+str(e)
也许你需要抓住这个错误 为与数据库操作相关的错误而引发,而不是 必须在程序员的控制下,例如意外情况 发生断开连接,未找到数据源名称,事务 无法处理,进程中发生内存分配错误 数据库错误的一个子类
try:
CURSOR.execute(query)
except OperationalError as e:
print "OperationalError : {0}".format(e)