首页 > 解决方案 > 将多个 SQL 查询的结果附加到 Pandas 数据框或字典中

问题描述

我正在尝试遍历几个 SQL 查询,并将这些查询的结果附加到数据框或字典中,键是 SQL 查询

我能够从这些 SQL 查询中检索结果。

from pandas import DataFrame
for index, row in df.iterrows(): 
    cur.execute(row["SQL_Query"]) 
    print(cur.fetchall())

输出:

[(datetime.date(2019, 4, 8), datetime.date(2019, 4, 1))]

[(2, )]

[('6', 2), ('7', 2)]

[(13, 2)]

但是当我尝试将它们添加到数据框时,我只能从最后一个查询中获取结果。

from pandas import DataFrame
for index, row in df.iterrows(): 
    res = cur.execute(row["SQL_Query"]) 
    df['Results'] = DataFrame(cur.fetchall())

“输出”

现在的目标只是在不同的列中获得来自 SQL 查询的结果。例如,查询是否返回 Total Count 和 Failed Count,那么它们位于 2 个不同的列中。

标签: pythonsql-serverdataframedictionarypyodbc

解决方案


问题是您正在遍历数据框以进行查询,然后每次都分配 df['Results'] 。您应该应用索引值。

下面应该可以工作,或者至少让你走上正轨。我无法快速复制它来测试它。

from pandas import DataFrame
for index, row in df.iterrows(): 
    cur.execute(row["SQL_Query"]) 
    df.loc[index,'Results'] = cur.fetchall()

推荐阅读