本文介紹了在從Python pyodbc調(diào)用SQL Server中的存儲(chǔ)過(guò)程時(shí)遇到問(wèn)題的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
這是一個(gè)常見(jiàn)的問(wèn)題,如果是這樣的話(huà),我已經(jīng)從其他問(wèn)題中獲得了一些好的線(xiàn)索,但我仍然沒(méi)有成功。
我在SQL Server中有一個(gè)復(fù)雜的存儲(chǔ)過(guò)程,它執(zhí)行一系列操作來(lái)填充表。它不接受任何參數(shù),也不返回任何字段。在我調(diào)用SP之后,我查詢(xún)表–我需要成批處理大量數(shù)據(jù),這很好用。從Python調(diào)用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設(shè)置為ON,這樣,在返回之前,python將等待SP完成。但當(dāng)我運(yùn)行此命令時(shí),系統(tǒng)不會(huì)調(diào)用SP。相同的連接參數(shù)可用于查詢(xún)相同模式中的表。不會(huì)產(chǎn)生任何錯(cuò)誤。
我沒(méi)有主意了。
推薦答案
將NOCOUNT設(shè)置為ON并不總是足夠。可以肯定的是,循環(huán)直到pyodbc認(rèn)為沒(méi)有更多的結(jié)果集,或者您可以在執(zhí)行完成之前取消執(zhí)行。例如
cursor.execute(sql)
while cursor.nextset():
pass
cursor.close()
這篇關(guān)于在從Python pyodbc調(diào)用SQL Server中的存儲(chǔ)過(guò)程時(shí)遇到問(wèn)題的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,