当前位置: 首页 > news >正文

Python读取excel表格并写入数据库

1、python环境要求

# python 类库要求
pip install pandas openpyxl mysql-connector-python# 高版本的xlrd,无法处理xlsx
pip install xlrd==1.2.0

2、代码

import pandas as pd
import mysql.connector# 连接到 MySQL 数据库
conn = mysql.connector.connect(host='xxx.xxx.xxx.xxx',  # 数据库主机地址user='********',  # 数据库用户名password='********',  # 数据库密码database='test'  # 目标数据库
)cursor = conn.cursor()# 读取 Excel 文件中的所有 Sheet
excel_file = '.\test.xlsx'  # 需要读取的 Excel 文件路径
xls = pd.ExcelFile(excel_file)# 遍历每个 Sheet 页
for sheet_name in xls.sheet_names:# 读取当前 sheet 的数据到 DataFramedf = pd.read_excel(xls, sheet_name=sheet_name)# 假设你要插入的数据库表结构与 DataFrame 的列结构匹配# 如果表结构不同,需要进行列名映射或其他处理for index, row in df.iterrows():# 准备插入数据的 SQL 语句# 假设表名为 `your_table`,并且表结构和列名与 DataFrame 匹配sql = ""if sheet_name == "环境数据":# 开始行号# if index >= 7:sql = """INSERT INTO en_energy_supply (d_year, energy_type_c, energy_type_e, country_c, country_e, energy_reserves, energy_usage)VALUES (%s, %s, %s, %s, %s, %s, %s)"""# 因为sheet页中的列有可能不能,所以需要通过不同的sheet页列进行补充# else:# if  else: sql = ""if len(sql) > 0:# 将 DataFrame 中的行转化为一个元组values = tuple(row)try:# 执行插入操作cursor.execute(sql, values)conn.commit()  # 提交事务except mysql.connector.Error as err:print(f"Error: {err}")conn.rollback()  # 回滚事务# 关闭连接
cursor.close()
conn.close()

3、报错问题记录

raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported

xlrd的版本不对,xlsx只能用低版本处理。

http://www.dtcms.com/a/389474.html

相关文章:

  • 【LeetCode 每日一题】1317. 将整数转换为两个无零整数的和
  • 论文投稿信(Cover Letter)
  • WPF——DataGrid
  • 物联网智能电表平台:所有电表数据,集中到一个系统管
  • Python自学19-Python操作Word和PowerPoint文件
  • Android使用GPU指南
  • 贪心算法应用:装箱问题(BFD算法)详解
  • 如何入门到实战策略学习ETF期权?
  • 贪心算法应用:最小反馈顶点集问题详解
  • 物联网与智能体:下一代数字化生态的关键
  • 关于lvs+keeplived在mysql分库分上负载部署
  • Springboot获取bean的工具类
  • C++学习日记
  • DRAM的原理
  • Ansible插件开发
  • ubuntu 两个网卡进行映射
  • 通信高效的数据并行分布式深度学习-综述-图表解读
  • 为何我的无刷电机在FOC开环控制下迅速发烫?
  • Docker多容器编排:Compose 实战教程——深入探索与实践
  • 网络交换机分类与功能解析
  • FPGA学习笔记——Vivado创建工程(2022版)
  • Python 美食菜谱可视化:Django 后端 + Vue 前端 + 豆果爬虫 + Echarts(大数据方向)(建议收藏)✅
  • 【从入门到精通Spring Cloud】声明式服务调用组件OpenFeign
  • 【Linux】系统部分——线程互斥
  • Qt QVBoxPlotModelMapper详解
  • Arcgis中的模型构建器技术之按属性批量建库并对应输出
  • Selenium UI 自动化:自定义 send_keys 方法实现与优化
  • golang后端面试复习
  • webpack学习笔记-entry
  • webpack学习之output