1

我正在尝试使用 Python 调用 SQL 查询,使用pyodbc.

它通过以下方式正常工作:

import pyodbc
import pandas.io.sql as psql

server_name  = 'My_Server'
database_name = 'My_DB'

conn = pyodbc.connection("driver={SQL Server};server=" + server_name + ";database=" + database_name + ";trusted_connection=true")

sql_command = """ EXEC MY_DB.dbo.some_proc"""

df = psql.read_frame(sql_command, conn)

some_proc返回一张桌子就可以了。some_proc但是如果返回多个表,例如两个表,我该怎么办?

非常感谢。

4

1 回答 1

2

存储过程多个表中借用 - PYODBC - Python

确保您在存储过程中设置了 SET NOCOUNT ON,否则这些都不起作用。

下面创建一个数据框列表,其中每个索引都是从存储过程返回的表。

sql = f"EXEC dbo.StoredProcedure '{param1}', '{param2}'"

cur = cnxn.cursor()
df_list = []

# get First result
rows = cur.execute(sql).fetchall()
columns = [column[0] for column in cur.description]
df_list.append(pd.DataFrame.from_records(rows, columns=columns))

# check for more results
while (cur.nextset()):
   rows = cur.fetchall()
   columns = [column[0] for column in cur.description]
   df_list.append(pd.DataFrame.from_records(rows, columns=columns))

cur.close()

然后参考df_list[0].head()

于 2019-10-23T20:15:52.443 回答