python利用pymysql和openpyxl實(shí)現(xiàn)操作MySQL數(shù)據(jù)庫并插入數(shù)據(jù)
1. 需求分析
本文將介紹如何使用Python連接MySQL數(shù)據(jù)庫,并從Excel文件中讀取數(shù)據(jù),將其插入到MySQL數(shù)據(jù)庫中。
2. 環(huán)境準(zhǔn)備
在開始本文之前,請(qǐng)確保您已經(jīng)安裝好了以下環(huán)境:
- Python 3.x
- PyMySQL庫
- openpyxl庫
- MySQL數(shù)據(jù)庫
3. 連接MySQL數(shù)據(jù)庫
我們可以使用pymysql庫來連接MySQL數(shù)據(jù)庫。請(qǐng)先創(chuàng)建一個(gè)名為test的MySQL數(shù)據(jù)庫,并在其中創(chuàng)建一個(gè)名為yonghu的表。
import pymysql
# 連接到MySQL數(shù)據(jù)庫
mydb = pymysql.connect(
host="localhost",
user="root",
passwd="123456",
db="test"
)在上述代碼中,我們調(diào)用了pymysql庫中的connect()函數(shù)來連接MySQL數(shù)據(jù)庫。其中,host參數(shù)是MySQL服務(wù)器的主機(jī)名或IP地址,user參數(shù)是登錄MySQL服務(wù)器的用戶名,passwd參數(shù)是登錄MySQL服務(wù)器的密碼,db參數(shù)是要連接的數(shù)據(jù)庫名。
4. 打開Excel文件
在Python中,可以使用openpyxl庫來讀寫Excel文件。請(qǐng)先安裝好openpyxl庫。
from openpyxl import load_workbook # 打開Excel文件 wb = load_workbook(filename=r'E:\重新開始\Python操作MySQL數(shù)據(jù)庫\sheet1.xlsx') sheet = wb.active
在上述代碼中,我們使用load_workbook()函數(shù)加載Excel文件,并使用active屬性獲取活動(dòng)工作表。
5. 獲取表頭
在插入數(shù)據(jù)之前,我們需要先獲取Excel表格的表頭信息。
# 獲取表頭 header = [cell.value for cell in sheet[1]]
在上述代碼中,我們遍歷第一行的單元格,獲取每個(gè)單元格的值,作為表頭。
6. 遍歷Excel數(shù)據(jù)并插入數(shù)據(jù)庫
接下來,我們遍歷Excel文件中的每一行數(shù)據(jù),并將其插入到MySQL數(shù)據(jù)庫中。
# 遍歷每一行數(shù)據(jù),并將其插入到數(shù)據(jù)庫中
cursor = mydb.cursor()
count = 0
for row in sheet.iter_rows(min_row=2, values_only=True):
sql = f"INSERT INTO yonghu ({', '.join(header)}) VALUES ({', '.join(['%s'] * len(header))})"
cursor.execute(sql, row)
count += 1
print(f"正在插入{count}條數(shù)據(jù)")
# 提交更改并關(guān)閉數(shù)據(jù)庫連接
mydb.commit()
cursor.close()
mydb.close()在上述代碼中,我們使用iter_rows()函數(shù)從第二行開始遍歷每一行數(shù)據(jù)。在遍歷過程中,我們構(gòu)建了一個(gè)插入數(shù)據(jù)的SQL語句,使用占位符%s,然后使用游標(biāo)對(duì)象執(zhí)行SQL語句,將行數(shù)據(jù)插入到MySQL數(shù)據(jù)庫中。
最后,我們提交了對(duì)數(shù)據(jù)庫的更改,并關(guān)閉了游標(biāo)對(duì)象和與MySQL數(shù)據(jù)庫的連接。
7. 完整代碼
最終的Python代碼如下:
from openpyxl import load_workbook # 導(dǎo)入load_workbook函數(shù),用于加載Excel文件
import pymysql # 導(dǎo)入pymysql庫,用于連接和操作MySQL數(shù)據(jù)庫
# 連接到MySQL數(shù)據(jù)庫
mydb = pymysql.connect(
host="localhost",
user="root",
passwd="123456",
db="test"
)
# 打開Excel文件
wb = load_workbook(filename=r'E:\重新開始\Python操作MySQL數(shù)據(jù)庫\sheet1.xlsx') # 加載Excel文件
sheet = wb.active # 獲取活動(dòng)工作表
# 獲取表頭
header = [cell.value for cell in sheet[1]] # 獲取第一行的單元格值,作為表頭
# 遍歷每一行數(shù)據(jù),并將其插入到數(shù)據(jù)庫中
cursor = mydb.cursor() # 創(chuàng)建游標(biāo)對(duì)象,用于執(zhí)行SQL語句
count = 0 # 計(jì)數(shù)器,用于記錄插入的數(shù)據(jù)條數(shù)
for row in sheet.iter_rows(min_row=2, values_only=True): # 從第二行開始遍歷每一行數(shù)據(jù)
sql = f"INSERT INTO yonghu ({', '.join(header)}) VALUES ({', '.join(['%s'] * len(header))})"
# 構(gòu)建插入數(shù)據(jù)的SQL語句,使用占位符%s
cursor.execute(sql, row) # 執(zhí)行SQL語句,將行數(shù)據(jù)插入到數(shù)據(jù)庫中
count += 1 # 每插入一條數(shù)據(jù),計(jì)數(shù)器加1
print(f"正在插入{count}條數(shù)據(jù)") # 輸出插入的數(shù)據(jù)條數(shù)
# 提交更改并關(guān)閉數(shù)據(jù)庫連接
mydb.commit() # 提交對(duì)數(shù)據(jù)庫的更改
cursor.close() # 關(guān)閉游標(biāo)對(duì)象
mydb.close() # 關(guān)閉與數(shù)據(jù)庫的連接到此這篇關(guān)于python利用pymysql和openpyxl實(shí)現(xiàn)操作MySQL數(shù)據(jù)庫并插入數(shù)據(jù)的文章就介紹到這了,更多相關(guān)python操作MySQL數(shù)據(jù)庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python 利用pandas和mysql-connector獲取Excel數(shù)據(jù)寫入到MySQL數(shù)據(jù)庫
- 使用Python操作MySQL數(shù)據(jù)庫的教程詳解
- Python操作MySQL數(shù)據(jù)庫的入門指南
- Python pymysql連接數(shù)據(jù)庫并將查詢結(jié)果轉(zhuǎn)化為Pandas dataframe
- python數(shù)據(jù)庫操作指南之PyMysql使用詳解
- Python練習(xí)之操作MySQL數(shù)據(jù)庫
- python?實(shí)現(xiàn)?pymysql?數(shù)據(jù)庫操作方法
相關(guān)文章
詳解Python利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù)
在做一些python工具的時(shí)候,常常會(huì)碰到定時(shí)器問題,總覺著使用threading.timer或者schedule模塊非常不優(yōu)雅。所以本文將利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù),需要的可以參考一下2022-03-03
python3.5基于TCP實(shí)現(xiàn)文件傳輸
這篇文章主要為大家詳細(xì)介紹了python3.5基于TCP實(shí)現(xiàn)文件傳輸?shù)拇a,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Python實(shí)現(xiàn)SRT字幕文件合并的實(shí)戰(zhàn)教程
這篇文章將探索如何通過Python腳本 Srt_Shift.py 來讀取、處理時(shí)間戳、合并字幕條目,并將合并后的字幕保存到新的SRT文件中,感興趣的小伙伴可以了解下2025-11-11
python獲取指定字符串中重復(fù)模式最高的字符串方法
今天小編就為大家分享一篇python獲取指定字符串中重復(fù)模式最高的字符串方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
深度解析Python?yfinance的核心功能和高級(jí)用法
yfinance是一個(gè)功能強(qiáng)大且易于使用的Python庫,用于從Yahoo Finance獲取金融數(shù)據(jù),本教程將深入探討yfinance的核心功能和高級(jí)用法,感興趣的朋友跟隨小編一起看看吧2025-08-08

