Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何捕获pymssql死锁作为异常?_Python_Sql Server_Database Deadlocks_Pymssql - Fatal编程技术网

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

我们的一些数据挖掘工作陷入了僵局,失去了联系。挑战在于,我们希望在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 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)