我正在与JayDeBeApi连接到SQL Server 2017,并运行一个脚本,如:
在步骤3中,我得到以下错误:
Cannot insert duplicate key row in object 'dbo.a-table' with unique index 'UQ_a-table'. The duplicate key value is (11, 0001, 3751191, T70206CAT, 0000).
只插入~360k条记录,而不是~360k条记录。所以第3步中止。 但是临时表将被删除。所以第4步就完成了。在
我能修正这个错误。但是对于JayDeBeApi,我没有看到错误。 从Python的角度来看,似乎一切都很顺利。在
我的目标是捕捉这些错误以适当地处理它们。 有什么办法吗?在
我的Python代码看起来像。在
try:
localCursor = dbConnection.cursor()
x = localCursor.execute(query)
logInfo("Run script %s... done" % (scriptNameAndPath), "run script", diagnosticLog)
except Exception as e:
logError("Error running sql statement " + scriptNameAndPath + ". Skipping rest of row.",
"run script", e, diagnosticLog)
myrow = skipRowAndLogRecord(startRowTime, cursor, recordLog)
continue
x = localCursor.execute(myqrystm)
成功完成,因此不会引发异常。x
是None
,在检查{
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/try-catch-transact-sql?view=sql-server-2017
步骤3应该是all或none,因此a-table应该在重复键错误之后为空,除非您的实际代码有一个
WHERE
子句。在对于未检测到的异常,添加
SET NOCOUNT ON
作为脚本中的第一个语句。这将抑制DONE-IN-_-PROC消息,除非您的代码处理多个结果集,否则这些消息将干扰脚本执行。在相关问题 更多 >
编程相关推荐