python - 存储过程多表 - PYODBC - Python
问题描述
我正在尝试执行具有 20 个不同表输出的存储过程。这些输出范围为 3-6 列和 10-100 行。如果不是 pyodbc,我还能如何在没有相同结构的情况下遍历所有这些表?
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)
解决方案
考虑使用数据框列表并通过以下方式访问多个结果集nextset()
:
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
推荐阅读
- javascript - 标签属性 onclick 函数触发了两次
- solace - Solace CLI 输出文档
- python - 如何在 Django 管理详细信息页面中添加链接以下载文件?
- qt - 虚拟键盘隐藏文本 QML
- swift - 如何在约会孩子之后从 Firebase 中读取信息?
- javascript - javascript中的RSA加密和Java中的解密
- matlab - 如何在matlab中对所有维度的向量进行条件处理?
- jqgrid - Jqgrid reload with reload with reload with current set to true 不能正确地重新加载网格
- mysql - SQL中如何查找员工工资总和大于等于10000的部门?
- node.js - sudo:节点:在 EC2 Ubuntu 上找不到命令