PyODBC执行存储过程未完成

时间:2016-04-25 01:49:35

标签: python sql sql-server stored-procedures sql-server-2012

我有以下代码,存储过程用于调用多个存储过程。我可以运行存储过程,它将在SQL 2012中完成而没有问题。我使用的是Python 3.3。

cnxn = pyodbc.connect('DRIVER={SQL Server};Server=.\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=yes;')
cursor = cnxn.cursor()

cnxn.timeout = 0
cnxn.autocommit = True

cursor.execute("""exec my_SP""") 

python代码正在执行,我通过插入大量打印确定了这一点。 我确实看到了关于等待SP完成的python的另一个问题。我尝试添加' time.sleep()'执行后,并改变时间(最多120秒)无变化。 根据结果​​,存储过程似乎部分执行。数据表明它甚至会中断其中一个子存储过程,但是当从查询分析器运行SP时它很好。

我最好的猜测是这与SQL配置相关,但我迷失在哪里看。

有什么想法?

3 个答案:

答案 0 :(得分:1)

将SET NOCOUNT OFF添加到我的proc中为我工作。

答案 1 :(得分:0)

只是跟进;我使用位于下面链接的时间功能,并降低嵌套存储过程的级别,取得了有限的成功。

在我上面调用的级别中,有4层嵌套的SP'当你有3层或更少层时,pyodbc似乎表现得更好。对我来说没有多大意义,但它确实有效。

make python wait for stored procedure to finish executing

对此背后的基本原理的任何意见将不胜感激。

答案 2 :(得分:0)

我遇到了同样的问题,并通过设置锁定变量(请参见本凯恩的回答:make python wait for stored procedure to finish executing)并添加

来解决。

“ SET NOCOUNT 打开

在“创建程序...为”之后