我在Excel文件中存储了一些SQL查询。

我想在给定的SQL数据库上运行它们,然后将SQL查询和原始数据帧的结果存储在一个单独的数据框架中。
from sqlalchemy import create_engine
import pymssql
engine = create_engine('connection string')首先,我尝试将结果存储在一个工作良好的临时数据框架中。这些SQL查询中的每一个都提供3-4行输出。
df_result = pd.DataFrame()
for row in df.itertuples():
df_temp = pd.read_sql(row.SQL_Query, engine)
df_result = df_result.append(df_temp)

但目标是存储结果及其关联的查询/行。下面的内容显然是错误的,因为循环存储的结果只有最后3次。
df_result = pd.DataFrame()
for row in df.itertuples():
df_temp = pd.read_sql(row.SQL_Query, engine)
df_result = pd.merge(df, df_temp, left_index=True, right_index=True)

发布于 2019-05-07 21:15:54
考虑构建具有相应ID的数据帧列表(假定每一行都是唯一的)。然后对单个输出进行concat,最后在ID上使用原始数据帧的merge。
df_list = [pd.read_sql(row.SQL_Query, engine).assign(ID=row.ID) for row in df.itertuples()]
sql_df = pd.concat(df_list)
df_result = pd.merge(df, sql_df, on="ID")https://stackoverflow.com/questions/56030482
复制相似问题