我想在SQL服務器上執行存儲過程並使用python保存結果 - 我決定使用pymssql,因爲它看起來像是最簡單的解決方案。pymssql執行存儲過程,但不返回結果
print pymssql.__version__
server = 'MY\SERVER'
user = 'user'
password = 'password'
database = 'db'
proc = 'checkin'
with pymssql.connect(server, user, password, database) as conn:
with conn.cursor() as cursor:
cursor.callproc(proc, (eha, ip, url, alias, location, rotation))
conn.commit()
f = open('/var/wwwdata/locations.txt', 'w')
for row in cursor:
print(row['Alias'])
f.write(row['Alias'] + '\n')
f.close()
SQL查詢中執行一些插入/更新,並與
SELECT Alias FROM MyTable
運行從SSMS的SP結束工作正常,但運行在Python的SP執行但插入/更新功能不返回任何結果。
根據pymssql documentation,這是一個已知的問題。但是,我找不到可行的解決方案。
我嘗試了一些不同的建議,我在網上找到了各地,包括
- 檢查了我的pymssql版本(2.1.1)
- 申報光標
dict=true
- 使用
cursor.nextset()
後cursor.commit()
- 取結果使用
cursor.fetchall()
或cursor.fetchone()
,兩者都導致類似的例外:
OperationalError: Statement not executed or executed statement has no resultset
有沒有人知道解決這個問題?或者,是否有更穩定的python與SQL服務器接口的解決方案(尤其是調用存儲過程)?我想我也應該問,我是否完全錯誤?
而且認爲它可能是值得注意的:操作系統是Raspbian上樹莓派2 B型運行
謝謝。我永遠不會自己發現這一點。 – user568021