本文介绍了在从Python pyodbc调用SQL Server中的存储过程时遇到问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个常见的问题,如果是这样的话,我已经从其他问题中获得了一些好的线索,但我仍然没有成功。

我在SQL Server中有一个复杂的存储过程,它执行一系列操作来填充表。它不接受任何参数,也不返回任何字段。在我调用SP之后,我查询表--我需要成批处理大量数据,这很好用。从Python调用SP是最困难的部分。

def executeSP():
    cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' +
            server+';DATABASE='+database+';UID='+username+';PWD=' + password)
    cnxn.autocommit = True
    cursor = cnxn.cursor()
    cursor.execute("SET NOCOUNT ON; exec [schema].[SPName]")   
    cursor.close()
    del cursor
    cnxn.close()

我将NOCOUNT设置为ON,这样,在返回之前,python将等待SP完成。但当我运行此命令时,系统不会调用SP。相同的连接参数可用于查询相同模式中的表。不会产生任何错误。

我没有主意了。

推荐答案

将NOCOUNT设置为ON并不总是足够。可以肯定的是,循环直到pyodbc认为没有更多的结果集,或者您可以在执行完成之前取消执行。例如

cursor.execute(sql)
while cursor.nextset():
    pass 
cursor.close()

这篇关于在从Python pyodbc调用SQL Server中的存储过程时遇到问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-25 10:06