Python-Pandas讀取Excel中數(shù)據(jù)寫入MySQL的表中
實(shí)現(xiàn)功能: Pandas讀取Excel中數(shù)據(jù)寫入MySQL的表中。
MySQL表結(jié)構(gòu):
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數(shù)據(jù):

注意: Excel中首行必須為表中的字段名稱。
Python代碼:
import pymysql import pandas as pd from sqlalchemy import create_engine # # 下面的方式將數(shù)據(jù)寫入MySQL時(shí)報(bào)錯: # # 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庫來進(jìn)行連接。 # # # 連接MySQL數(shù)據(jù)庫 # 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中的數(shù)據(jù)插入到MySQL表中 # df.to_sql(name='excel_to_mysql', con=connection, if_exists='append') # # # 關(guān)閉數(shù)據(jù)庫連接 # connection.close() # 讀取Excel文件 (Excel中第一行必須為表中的字段名稱) df = pd.read_excel('C:\\Users\\65742\\Desktop\\20240829\\斷路器.xlsx') # 數(shù)據(jù)庫的連接和認(rèn)證信息 username = "root" password = "Root@1234" hostIP = "localhost" port = "3306" database = "test" # 替換密碼中的'@'為'%40' password_encoded = password.replace("@","%40") # 創(chuàng)建連接MySQL的engine(即connection) engine = create_engine( "mysql+pymysql://" + username + ":" + password_encoded + "@" + hostIP + ":" + port + "/" + database # mysql+pymysql://用戶:密碼@url:端口/數(shù)據(jù)庫 ) # 將DataFrame中的數(shù)據(jù)插入到MySQL表中,(采用追加模式) df.to_sql(name="test_excel_to_mysql", con=engine, index=False, if_exists="append")
運(yùn)行該代碼即可將Excel中的數(shù)據(jù)寫入MySQL。
MySQL查詢表:

本文來自博客園,作者:業(yè)余磚家,轉(zhuǎn)載請注明原文鏈接:http://www.rzrgm.cn/yeyuzhuanjia/p/18387341

浙公網(wǎng)安備 33010602011771號