我有一个遍历数据库表列表并返回表名和数据帧计数的函数
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列,但我不确定。
答案 0 :(得分:0)
d.items()返回如下列表。
[(键,(值)),...]
例如:-
>>> d={'A':[1,2],'B':[3,4]}
>>> d.items()
dict_items([('A', [1, 2]), ('B', [3, 4])])
因此它只有两列。这就是为什么它返回错误的原因。