【发布时间】:2018-08-06 10:57:04
【问题描述】:
当使用 pyodbc 调用存储过程时,它什么也不返回,因此 cursor.fetchall() 给出错误:
ProgrammingError Traceback (most recent call last)
<ipython-input-23-d35fc1caa8d6> in <module>()
----> 1 cursor.fetchall()
ProgrammingError: No results. Previous SQL was not a query.
我试了几次都是一样的:
conn = pyodbc.connect(r'DSN=<DSN>;UID=<UID>;PWD=<pswd>;DATABASE=<database>;')
cursor = conn.cursor()
比
cursor.execute('Stored_procedure 'param1', 'param2', 'param3'')
cursor.fetchall()
或
cursor.execute("{CALL Stored_procedure (?,?,?)}", (p1, p2, p3))
或者和熊猫一起
pd.read_sql("exec Stored_procedure p1, p2, p3", conn)
使用以下方法获取表格数据没有问题:
df = pd.read_sql('SELECT * FROM Config', conn)
或使用 sqlcmd
获取数据sqlcmd -S <DSN> -U <user> -P <password> -d <database> -Q "exec Stored_procedure 'p1', 'p2', 'p3'" -o sqlcms_exec.txt
有什么想法吗?谢谢
【问题讨论】:
标签: python sql pandas pypyodbc