Python實(shí)現(xiàn)可視化Excel導(dǎo)入MySQL工具的完整代碼
在日常辦公和數(shù)據(jù)處理中,我們經(jīng)常會(huì)遇到這樣的場(chǎng)景:手里有一堆Excel文件,需要把它們導(dǎo)入數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一管理,但每次手動(dòng)寫(xiě)SQL建表、導(dǎo)入數(shù)據(jù),不僅繁瑣還容易出錯(cuò);對(duì)于不會(huì)寫(xiě)復(fù)雜代碼的職場(chǎng)人來(lái)說(shuō),更是無(wú)從下手。
今天就給大家分享一個(gè)純Python開(kāi)發(fā)的可視化桌面工具,無(wú)需命令行操作,點(diǎn)點(diǎn)鼠標(biāo)就能實(shí)現(xiàn)Excel文件一鍵導(dǎo)入MySQL,還能自動(dòng)為每個(gè)Excel獨(dú)立建表,同時(shí)支持?jǐn)?shù)據(jù)庫(kù)表預(yù)覽、導(dǎo)出Excel,雙向數(shù)據(jù)交互超方便!不管是Python新手練手,還是職場(chǎng)人解決實(shí)際數(shù)據(jù)問(wèn)題,都非常實(shí)用~
一、工具核心功能亮點(diǎn)
這款工具基于Python的開(kāi)發(fā)可視化界面,核心圍繞「Excel與MySQL雙向交互」設(shè)計(jì),功能簡(jiǎn)潔但實(shí)用性拉滿,核心亮點(diǎn)如下:
- 可視化操作:全程GUI界面,無(wú)需寫(xiě)任何代碼,鼠標(biāo)點(diǎn)擊即可完成所有操作;
- 自動(dòng)獨(dú)立建表:每個(gè)Excel文件導(dǎo)入時(shí),自動(dòng)生成唯一表名(文件名+時(shí)間戳),避免表名沖突;
- 數(shù)據(jù)實(shí)時(shí)預(yù)覽:左側(cè)選擇表名,右側(cè)直接展示數(shù)據(jù)庫(kù)表的完整數(shù)據(jù),支持滾動(dòng)查看;
- 雙向數(shù)據(jù)導(dǎo)出:不僅能導(dǎo)入Excel到MySQL,還能將數(shù)據(jù)庫(kù)表導(dǎo)出為Excel文件;
- 列表實(shí)時(shí)同步:自動(dòng)加載數(shù)據(jù)庫(kù)中所有表名,刷新即可同步最新數(shù)據(jù),操作無(wú)延遲。

二、核心技術(shù)棧
工具采用輕量化技術(shù)棧,無(wú)復(fù)雜依賴,安裝簡(jiǎn)單、運(yùn)行穩(wěn)定,核心技術(shù)如下:
- 開(kāi)發(fā)語(yǔ)言:Python 3.9x
- 數(shù)據(jù)處理:pandas(Excel讀寫(xiě)、數(shù)據(jù)庫(kù)數(shù)據(jù)讀取,高效便捷)
- 數(shù)據(jù)庫(kù)連接:SQLAlchemy + pymysql(MySQL連接引擎,兼容各類(lèi)MySQL版本)
- 數(shù)據(jù)庫(kù):MySQL 8.0+(支持本地/遠(yuǎn)程數(shù)據(jù)庫(kù),通用性強(qiáng))
三、核心代碼解析
下面給大家拆解工具的核心代碼邏輯,既能理解實(shí)現(xiàn)原理:
1. 數(shù)據(jù)庫(kù)配置與引擎初始化
首先配置MySQL連接信息,通過(guò)SQLAlchemy創(chuàng)建數(shù)據(jù)庫(kù)引擎,后續(xù)所有數(shù)據(jù)庫(kù)操作都基于這個(gè)引擎,簡(jiǎn)潔高效:
# 數(shù)據(jù)庫(kù)配置(按需修改)
db_config = {
'host': 'localhost',
'user': 'root',
'password': 'root',
'database': 'lx260210two',
'port': 3306
}
# 創(chuàng)建數(shù)據(jù)庫(kù)引擎
conn_str = f"mysql+pymysql://{db_config['user']}:{db_config['password']}@{db_config['host']}:{db_config['port']}/{db_config['database']}?charset=utf8mb4"
self.engine = create_engine(conn_str)
- 關(guān)鍵細(xì)節(jié):
charset=utf8mb4確保支持中文、特殊字符,避免導(dǎo)入時(shí)亂碼; - 注意:需提前在MySQL中創(chuàng)建好指定數(shù)據(jù)庫(kù)(如
lx260210two)。
2. 自動(dòng)生成唯一表名(核心設(shè)計(jì))
為了避免重復(fù)導(dǎo)入同一Excel時(shí)表名沖突,工具采用「文件名+時(shí)間戳」的方式生成唯一表名,這是整個(gè)工具的核心設(shè)計(jì)之一:
# 提取Excel文件名(去掉后綴)
base_name = os.path.splitext(os.path.basename(file_path))[0]
# 生成時(shí)分秒時(shí)間戳
timestamp = datetime.now().strftime("%H%M%S")
# 拼接唯一表名
table_name = f"tbl_{base_name}_{timestamp}"
示例:Excel文件名為「員工信息.xlsx」,導(dǎo)入后表名可能為tbl_員工信息_143025;
表名前綴tbl_是規(guī)范命名,方便后續(xù)區(qū)分業(yè)務(wù)表。
3. Excel導(dǎo)入MySQL核心邏輯
通過(guò)pandas讀取Excel文件,再調(diào)用to_sql方法直接導(dǎo)入數(shù)據(jù)庫(kù),一行代碼完成數(shù)據(jù)寫(xiě)入,無(wú)需手動(dòng)寫(xiě)INSERT語(yǔ)句:
# 讀取Excel文件 df = pd.read_excel(file_path) # 導(dǎo)入MySQL(自動(dòng)建表,replace模式:表名唯一,直接創(chuàng)建) df.to_sql(name=table_name, con=self.engine, if_exists='replace', index=False)
if_exists='replace':因?yàn)楸砻俏ㄒ坏?,這里直接替換即可,本質(zhì)是創(chuàng)建新表;
index=False:不導(dǎo)入pandas的索引列,保證數(shù)據(jù)庫(kù)表結(jié)構(gòu)干凈。
4. 數(shù)據(jù)庫(kù)表預(yù)覽與導(dǎo)出
預(yù)覽數(shù)據(jù):通過(guò)pd.read_sql查詢表數(shù)據(jù),清空tkinter的Treeview表格后,逐行填充數(shù)據(jù),同時(shí)處理空值(將NaN替換為空字符串);
導(dǎo)出數(shù)據(jù):選中表名后,查詢數(shù)據(jù)并通過(guò)to_excel導(dǎo)出為Excel文件,支持自定義保存路徑。
四、工具使用教程
1. 安裝依賴包
首先打開(kāi)終端,執(zhí)行以下命令安裝工具所需的所有依賴:
pip install pandas sqlalchemy pymysql openpyxl
openpyxl:pandas讀寫(xiě)xlsx文件的必備依賴;tkinter:Python內(nèi)置,無(wú)需額外安裝(若缺失,Windows執(zhí)行pip install tk)。
2. 修改數(shù)據(jù)庫(kù)配置
打開(kāi)代碼,找到db_config字典,修改為自己的MySQL信息:
db_config = {
'host': 'localhost', # 本地MySQL填localhost,遠(yuǎn)程填I(lǐng)P
'user': 'root', # MySQL用戶名
'password': '你的密碼', # MySQL密碼
'database': '你的數(shù)據(jù)庫(kù)名', # 提前創(chuàng)建好的庫(kù)名
'port': 3306 # 默認(rèn)端口,無(wú)需修改
}
3. 運(yùn)行工具并操作
直接運(yùn)行代碼,彈出可視化窗口,界面分為「左側(cè)表名列表」和「右側(cè)操作區(qū)」;
導(dǎo)入Excel:點(diǎn)擊「?? 導(dǎo)入新 Excel (獨(dú)立建表)」,選擇要導(dǎo)入的Excel文件,等待提示「建表成功」,左側(cè)列表會(huì)自動(dòng)新增表名;
預(yù)覽數(shù)據(jù):點(diǎn)擊左側(cè)列表中的任意表名,右側(cè)表格會(huì)實(shí)時(shí)展示該表的所有數(shù)據(jù);
導(dǎo)出表:選中左側(cè)表名,點(diǎn)擊「?? 導(dǎo)出選中表」,選擇保存路徑,即可將數(shù)據(jù)庫(kù)表導(dǎo)出為Excel;
刷新列表:若數(shù)據(jù)庫(kù)新增表,點(diǎn)擊「?? 刷新列表」即可同步最新表名。
五、注意事項(xiàng)
- 確保MySQL服務(wù)已啟動(dòng),且配置的賬號(hào)有數(shù)據(jù)庫(kù)讀寫(xiě)權(quán)限;
- Excel文件建議保存為
.xlsx格式,避免.xls格式出現(xiàn)兼容問(wèn)題; - 導(dǎo)入超大Excel(10萬(wàn)行+)時(shí),可能會(huì)有短暫卡頓,屬于正?,F(xiàn)象;
- 表名不支持特殊字符(如/、\、空格),Excel文件名盡量規(guī)范。
到此這篇關(guān)于Python實(shí)現(xiàn)可視化Excel導(dǎo)入MySQL工具的完整代碼的文章就介紹到這了,更多相關(guān)Python Excel導(dǎo)入MySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python類(lèi)的定義、繼承及類(lèi)對(duì)象使用方法簡(jiǎn)明教程
這篇文章主要介紹了Python類(lèi)的定義、繼承及類(lèi)對(duì)象使用方法簡(jiǎn)明教程,本文用淺顯易懂的語(yǔ)言講解了類(lèi)的定義、繼承及類(lèi)對(duì)象的使用,非常實(shí)用易懂,需要的朋友可以參考下2015-05-05
Python轉(zhuǎn)為C語(yǔ)言并編譯生成二進(jìn)制文件的教程詳解
這篇文章主要為大家詳細(xì)介紹了將Python轉(zhuǎn)為C語(yǔ)言并編譯生成二進(jìn)制文件的相關(guān)教程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-12-12
Python3 venv搭建輕量級(jí)虛擬環(huán)境的步驟(圖文)
這篇文章主要介紹了Python3 venv搭建輕量級(jí)虛擬環(huán)境的步驟(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
pytorch中tensor.expand()和tensor.expand_as()函數(shù)詳解
今天小編就為大家分享一篇pytorch中tensor.expand()和tensor.expand_as()函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
利用Python進(jìn)行圖像的加法,圖像混合(附代碼)
這篇文章主要介紹了利用Python進(jìn)行圖像的加法,圖像混合(附代碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
深度解鎖Python中類(lèi)與元類(lèi)的核心機(jī)制與實(shí)戰(zhàn)應(yīng)用
本文將帶你撥開(kāi)迷霧,從動(dòng)態(tài)創(chuàng)建類(lèi)入門(mén),吃透type的雙重身份,拆解元類(lèi)的底層邏輯與實(shí)例化流程,最后落地實(shí)戰(zhàn)應(yīng)用,徹底掌握Python面向?qū)ο蟮摹傅讓用艽a」2026-03-03
使用pandas庫(kù)讀取和寫(xiě)入csv文件的實(shí)現(xiàn)示例
Python提供了多種方式來(lái)讀取和寫(xiě)入CSV文件,本文主要介紹了使用pandas庫(kù)讀取和寫(xiě)入csv文件的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2025-05-05
pdf論文中python畫(huà)的圖Type 3 fonts字體不兼容的解決方案
這篇文章主要介紹了pdf論文中python畫(huà)的圖Type 3 fonts字體不兼容的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04

