我有一个循环数据库表的函数,并返回数据帧中的表名和计数
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'])
这工作正常,但我想修改select语句,使其看起来像这样,并返回1行,其中包含2列结果:
'SELECT
COUNT(*) AS cnt,
MAX(COALESCE(MODIFY_DT, CREATE_DT)) AS LAST_MODIFIED
FROM {}'.format(table)
然后我将它作为Source_Table,Source_Cnt,Source_Max_Date存储在数据帧中
当我尝试只向数据帧添加列名时,它不起作用:
df = pd.DataFrame(list(d.items()), columns=['Source_Table', 'Source_Cnt', 'Src_Max_Date'])
AssertionError: 3 columns passed, passed data had 2 columns
我认为这是我在d {}中存储密钥val的方式。它不允许> 1列,但我不确定。
d.items()返回如下所示的列表。
[(键,(值)),...]
例如:-
>>> d={'A':[1,2],'B':[3,4]}
>>> d.items()
dict_items([('A', [1, 2]), ('B', [3, 4])])
所以它只有两列。这就是它返回错误的原因。