Python-Pandas读取Excel中数据写入MySQL的表中
实现功能: Pandas读取Excel中数据写入MySQL的表中。
MySQL表结构:
CREATE TABLE `test_excel_to_mysql` ( `ast_id` varchar(100) DEFAULT NULL , `equip_name` varchar(100) DEFAULT NULL , `swid` varchar(100) DEFAULT NULL , `psr_id` varchar(100) DEFAULT NULL , `equip_type` varchar(100) DEFAULT NULL , `provincial` varchar(100) DEFAULT NULL , `cidy` varchar(100) DEFAULT NULL , `operations_unit` varchar(100) DEFAULT NULL , `substation` varchar(100) DEFAULT NULL , `voltage_level` varchar(100) DEFAULT NULL , `phase` varchar(100) DEFAULT NULL , `run_state` varchar(100) DEFAULT NULL , `model_number` varchar(100) DEFAULT NULL, `maker` varchar(100) DEFAULT NULL , `production_date` varchar(100) DEFAULT NULL , `product_id` varchar(100) DEFAULT NULL , `start_up_date` varchar(100) DEFAULT NULL , `project_number` varchar(100) DEFAULT NULL , `project_name` varchar(100) DEFAULT NULL , `wbs_code` varchar(100) DEFAULT NULL , `asset` varchar(100) DEFAULT NULL , `asset_type` varchar(100) DEFAULT NULL , `subassembly` varchar(100) DEFAULT NULL , `subassembly_type` varchar(100) DEFAULT NULL , `ssswid` varchar(100) DEFAULT NULL , `ssast_id` varchar(100) DEFAULT NULL , `sfsc` varchar(100) DEFAULT NULL , `tzknczdwt` varchar(100) DEFAULT NULL , `sgsfk` varchar(100) DEFAULT NULL , `tyfs` varchar(100) DEFAULT NULL , `jyjz` varchar(100) DEFAULT NULL , `rzxs` varchar(100) DEFAULT NULL , `hzdz` varchar(100) DEFAULT NULL , `tyrq` varchar(100) DEFAULT NULL , `tynx` bigint DEFAULT NULL , `tyys` bigint DEFAULT NULL , `dqjj` bigint DEFAULT NULL , `dqsj` bigint DEFAULT NULL , `dqlx` bigint DEFAULT NULL , `hxjj` bigint DEFAULT NULL , `hxlx` bigint DEFAULT NULL , `syxm` varchar(100) DEFAULT NULL , `xmid` varchar(100) DEFAULT NULL , `syzy` varchar(100) DEFAULT NULL , `lxbz` varchar(100) DEFAULT NULL , `sbtz` varchar(100) DEFAULT NULL , `sypl` varchar(100) DEFAULT NULL ) ;
Excel数据:
注意: Excel中首行必须为表中的字段名称。
Python代码:
import pymysql import pandas as pd from sqlalchemy import create_engine # # 下面的方式将数据写入MySQL时报错: # # pandas.errors.DatabaseError: Execution failed on sql ' # # SELECT # # name # # FROM # # sqlite_master # # WHERE # # type IN ('table', 'view') # # AND name=?; # # ': not all arguments converted during string formatting # # 为了解决该问题,需要引用sqlalchemy这个第三方ORM库来进行连接。 # # # 连接MySQL数据库 # connection = pymysql.connect(host='localhost', user='root', password='Root@1234', db='test') # # # 读取Excel文件 (Excel中第一行必须为表中的字段名称) # df = pd.read_excel('C:\\Users\\65742\\Desktop\\20240829\\断路器.xlsx') # # # 将DataFrame中的数据插入到MySQL表中 # df.to_sql(name='excel_to_mysql', con=connection, if_exists='append') # # # 关闭数据库连接 # connection.close() # 读取Excel文件 (Excel中第一行必须为表中的字段名称) df = pd.read_excel('C:\\Users\\65742\\Desktop\\20240829\\断路器.xlsx') # 数据库的连接和认证信息 username = "root" password = "Root@1234" hostIP = "localhost" port = "3306" database = "test" # 替换密码中的'@'为'%40' password_encoded = password.replace("@","%40") # 创建连接MySQL的engine(即connection) engine = create_engine( "mysql+pymysql://" + username + ":" + password_encoded + "@" + hostIP + ":" + port + "/" + database # mysql+pymysql://用户:密码@url:端口/数据库 ) # 将DataFrame中的数据插入到MySQL表中,(采用追加模式) df.to_sql(name="test_excel_to_mysql", con=engine, index=False, if_exists="append")
运行该代码即可将Excel中的数据写入MySQL。
MySQL查询表:
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/18387341