多个查询结果到Pandas数据框

时间:2019-04-08 15:55:51

标签: python pandas dictionary

我有一个遍历数据库表列表并返回表名和数据帧计数的函数

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/minor","root","alphabet")) {
            Statement st = conn.createStatement();
            PreparedStatement stmt= conn.prepareStatement("select * FROM ? where name=? ;");
            PreparedStatement stmt2= conn.prepareStatement("select * FROM ? where name=? ;");
            stmt.setString(1, day_1);
            stmt.setString(2, faculty1);
            stmt2.setString(1,day_1);
            stmt2.setString(2, faculty2);
            ResultSet rs=stmt.executeQuery();
            ResultSet rs1= stmt.executeQuery();

这工作正常,但是我想修改select语句,使其看起来像这样,并返回1行和2列结果:

d = {}      
    for table in tables:
        a.execute('SELECT count(*) FROM {}'.format(table))
        for row in a.fetchall():
            key = table
            val = row[0]
            d[key] = val
    df = pd.DataFrame(list(d.items()), columns=['Source_Table', 'Source_Cnt'])

然后我将其作为Source_Table,Source_Cnt,Source_Max_Date存储在数据框中

当我尝试仅将列名称添加到数据框时,它不起作用:

'SELECT
    COUNT(*) AS cnt,
    MAX(COALESCE(MODIFY_DT, CREATE_DT)) AS LAST_MODIFIED
FROM {}'.format(table)

我认为这是将密钥val存储在d {}中的方式。不允许> 1列,但我不确定。

1 个答案:

答案 0 :(得分:0)

d.items()返回如下列表。

[(键,(值)),...]

例如:-

>>> d={'A':[1,2],'B':[3,4]}
>>> d.items()
dict_items([('A', [1, 2]), ('B', [3, 4])])

因此它只有两列。这就是为什么它返回错误的原因。