将SQL查询的结果与执行日期存储在单独的pandas数据框中

时间:2019-04-22 17:30:22

标签: python sql pandas pyodbc

我已经创建了一个查找表(在Excel中),该表具有各个表的表名和列名以及这些表下的列名以及要在这些字段上运行的所有SQL查询。下面是一个示例表。

Lookup  Table

所有SQL查询的结果格式均为Total_Count和Fail_Count。我想将这些结果以及当前版本的查找表中的所有信息以及执行日期输出到单独的表中。

样本结果表:

Sample_Result Table

下面是我用于在同一查找表中将结果汇总在一起的代码,但是难以将相同的结果存储在单独的result_set表中,该表具有用于总计和失败计数的单独列。


#include (Left Carat)windows.h>
#include (Left Carat)initguid.h>
#include (Left Carat)devguid.h>
#include (Left Carat)setupapi.h>
#include (Left Carat)stdio.h>


int main() {
    SP_DEVINFO_DATA devInfoData = {};
    devInfoData.cbSize = sizeof(devInfoData);

    // Get port info tree:
    HDEVINFO hDeviceInfo = SetupDiGetClassDevs( &GUID_DEVCLASS_PORTS,
                                                0,
                                                NULL,
                                                DIGCF_PRESENT
                                                );

1 个答案:

答案 0 :(得分:0)

使用DataFrame方法https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sql.html直接将查询加载到read_sql可能会更容易。

一个警告是您需要使用sqlAlchemy engine进行连接。我还发现itertuples更易于使用。

您拥有的那些代码仅仅是:

df['Results'] = ''
for row in df.itertuples(): 
            df_result = pd.read_sql(row.Sql_Query)
            df.loc[row.Table_Name, 'Total_count'] = df_result.total_count
            df.loc[row.Table_Name, 'Fail_count'] = df_result.fail_count

您上面的主要问题是,您要将结果查询的两列传递到df中的一列。您需要分别传递每列。