【问题标题】:Trying to import excel file(multiple sheets) into DB but getting only the last sheet data试图将 excel 文件(多张)导入数据库但只获取最后一张表数据
【发布时间】:2022-01-17 07:33:01
【问题描述】:

我正在尝试将多张工作表读取(导入)到我的数据库中,但问题是我的代码正在读取所有文件,但只写入文件中最后一张工作表的记录:

#从文件中导入数据集:

dfs = pd.read_excel('sample501.xlsx', sheet_name=None)
print (dfs.keys()) #print the name of sheets
d = {k: v[['SR_NO', 'NTN', 'NAME']].values.tolist()
        for k, v in  pd.read_excel('sample501.xlsx', sheet_name=None).items()}

for k, v in dfs.items():
    columns = ['SR_NO', 'NTN', 'NAME']
    df_data = v[columns]
    records = df_data.values.tolist()
    d[k] = records

#for test sheetnames
print (d.keys())

输出是: dict_keys(['Sheet1', 'Sheet2', 'Sheet3', 'Sheet4']) dict_keys(['Sheet1', 'Sheet2', 'Sheet3', 'Sheet4']) 任务完成。

看起来,它获取所有工作表数据,但仅将工作表 4 的记录写入我的数据库

【问题讨论】:

  • 第一行的变量是fs,但第二行打印的是dfsdfs 是什么?
  • 你的数据库更新操作的代码在哪里?您的代码看起来不错
  • 其实第一行也是dfs
  • 数据库代码:sql_insert = ''' INSERT INTO eg205 VALUES (?,?,?) ''' 尝试:cursor = conn.cursor() cursor.executemany(sql_insert, records) 游标。提交();

标签: python sql pandas


【解决方案1】:

尝试从您的所有工作表中concat您的记录:

cols = ['SR_NO', 'NTN', 'NAME']
dfs = pd.read_excel('sample501.xlsx', usecols=cols, sheet_name=None)
records = pd.concat(df for df in dfs.values()).to_numpy().tolist()

【讨论】:

  • 非常感谢,它有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 2015-12-15
相关资源
最近更新 更多