从 Python pyodbc 调用 SQL 服务器中的存储过程时遇到问题
Having trouble calling a stored procedure in SQL Server from Python pyodbc
这是一个常见的问题,如果看起来像,我从其他问题中得到了一些很好的线索,但我仍然没有成功。
我在 SQL 服务器中有一个复杂的存储过程,它会做很多事情来填充 table。它没有参数,也没有 return 任何字段。在我调用 SP 之后,我然后查询 table - 我需要批量处理大量数据,这很好用。从 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 设置为开,这样 python 将等到 SP 完成后再 returning。但是当我 运行 这个时,SP 没有被调用。相同的连接参数适用于在同一架构中查询 table。没有产生错误。
我运行没主意了。
设置 NOCOUNT ON 并不总是足够的。可以肯定的是,循环直到 pyodbc 认为没有更多的结果集,或者您可以在它完成之前取消执行。例如
cursor.execute(sql)
while cursor.nextset():
pass
cursor.close()
这是一个常见的问题,如果看起来像,我从其他问题中得到了一些很好的线索,但我仍然没有成功。
我在 SQL 服务器中有一个复杂的存储过程,它会做很多事情来填充 table。它没有参数,也没有 return 任何字段。在我调用 SP 之后,我然后查询 table - 我需要批量处理大量数据,这很好用。从 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 设置为开,这样 python 将等到 SP 完成后再 returning。但是当我 运行 这个时,SP 没有被调用。相同的连接参数适用于在同一架构中查询 table。没有产生错误。
我运行没主意了。
设置 NOCOUNT ON 并不总是足够的。可以肯定的是,循环直到 pyodbc 认为没有更多的结果集,或者您可以在它完成之前取消执行。例如
cursor.execute(sql)
while cursor.nextset():
pass
cursor.close()