我想在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