首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储过程多个表- PYODBC - Python

存储过程多个表- PYODBC - Python
EN

Stack Overflow用户
提问于 2018-06-04 15:17:49
回答 2查看 2.1K关注 0票数 2

我正在尝试使用20个不同的表输出来执行存储过程。这些输出范围从3-6列和10-100行.如果不是pyodbc,我如何能够在没有相同结构的情况下迭代所有这些表?

代码语言:javascript
复制
connection = pyodbc.connect(r'DRIVER={SQL Server Native Client 
11.0};SERVER=dsdrsossql2;DATABASE=TableauDev;Trusted_Connection=yes;')
sql = "{call dbo.DGGrading}"
cur = connection.cursor()
rows = cur.execute(sql,).fetchall()

columns = [column[0] for column in cur.description]
df = pd.DataFrame.from_records(rows,columns=columns)
print(df)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-04 15:27:42

考虑使用数据格式列表并使用nextset()访问多个结果集

代码语言:javascript
复制
cur = connection.cursor()
df_list = []

# FIRST RESULTSET
rows = cur.execute(sql).fetchall()
columns = [column[0] for column in cur.description]
df_list.append(pd.DataFrame.from_records(rows, columns=columns))
print(df.head())

# SUBSEQUENT RESULTSETS
while (cur.nextset()): 
   columns = [column[0] for column in cur.description]
   df_list.append(pd.DataFrame.from_records(rows, columns=columns))
   print(df.head())

cur.close()

# RUN ANY DATAFRAME OPERATION BY EACH ITEM OF df_list 
df_list[[1]].describe()
df_list[[2]].head()
df_list[[3]].tail()
df_list[[4]].dtypes
df_list[[5]].columns
票数 3
EN

Stack Overflow用户

发布于 2019-10-25 21:18:04

Parfait的代码对我无效,因为“后续结果集”缺少一行代码来提取下一个表。我没有足够的评论点,下面是对我有用的代码。

一些额外的事情

  • 对于MSSQL,调用不被识别,因此使用了EXEC。
  • 确保将NOCOUNT设置为存储过程中的NOCOUNT,否则fetchall不会正确地拉入表
代码语言:javascript
复制
param1 = "dynamic parameter1"
param2 = "dynamic parameter2"

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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50683810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档