python利用pymysql和openpyxl實現(xiàn)操作MySQL數(shù)據(jù)庫并插入數(shù)據(jù)
1. 需求分析
本文將介紹如何使用Python連接MySQL數(shù)據(jù)庫,并從Excel文件中讀取數(shù)據(jù),將其插入到MySQL數(shù)據(jù)庫中。
2. 環(huán)境準備
在開始本文之前,請確保您已經(jīng)安裝好了以下環(huán)境:
- Python 3.x
- PyMySQL庫
- openpyxl庫
- MySQL數(shù)據(jù)庫
3. 連接MySQL數(shù)據(jù)庫
我們可以使用pymysql庫來連接MySQL數(shù)據(jù)庫。請先創(chuàng)建一個名為test的MySQL數(shù)據(jù)庫,并在其中創(chuàng)建一個名為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ù)器的主機名或IP地址,user參數(shù)是登錄MySQL服務(wù)器的用戶名,passwd參數(shù)是登錄MySQL服務(wù)器的密碼,db參數(shù)是要連接的數(shù)據(jù)庫名。
4. 打開Excel文件
在Python中,可以使用openpyxl庫來讀寫Excel文件。請先安裝好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屬性獲取活動工作表。
5. 獲取表頭
在插入數(shù)據(jù)之前,我們需要先獲取Excel表格的表頭信息。
# 獲取表頭 header = [cell.value for cell in sheet[1]]
在上述代碼中,我們遍歷第一行的單元格,獲取每個單元格的值,作為表頭。
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)建了一個插入數(shù)據(jù)的SQL語句,使用占位符%s,然后使用游標對象執(zhí)行SQL語句,將行數(shù)據(jù)插入到MySQL數(shù)據(jù)庫中。
最后,我們提交了對數(shù)據(jù)庫的更改,并關(guān)閉了游標對象和與MySQL數(shù)據(jù)庫的連接。
7. 完整代碼
最終的Python代碼如下:
from openpyxl import load_workbook # 導入load_workbook函數(shù),用于加載Excel文件
import pymysql # 導入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 # 獲取活動工作表
# 獲取表頭
header = [cell.value for cell in sheet[1]] # 獲取第一行的單元格值,作為表頭
# 遍歷每一行數(shù)據(jù),并將其插入到數(shù)據(jù)庫中
cursor = mydb.cursor() # 創(chuàng)建游標對象,用于執(zhí)行SQL語句
count = 0 # 計數(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ù),計數(shù)器加1
print(f"正在插入{count}條數(shù)據(jù)") # 輸出插入的數(shù)據(jù)條數(shù)
# 提交更改并關(guān)閉數(shù)據(jù)庫連接
mydb.commit() # 提交對數(shù)據(jù)庫的更改
cursor.close() # 關(guān)閉游標對象
mydb.close() # 關(guān)閉與數(shù)據(jù)庫的連接到此這篇關(guān)于python利用pymysql和openpyxl實現(xiàn)操作MySQL數(shù)據(jù)庫并插入數(shù)據(jù)的文章就介紹到這了,更多相關(guān)python操作MySQL數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python趣味挑戰(zhàn)之pygame實現(xiàn)無敵好看的百葉窗動態(tài)效果
最近寫了很多期關(guān)于pygame的案例和知識點,自己也收獲了很多知識,也在這個過程中成長了不少, 這次還是圍繞surface對象進行詳細介紹,并形成完整的案例過程,文中有非常詳細實現(xiàn)百葉窗動態(tài)效果的代碼示例,需要的朋友可以參考下2021-05-05
在Python IDLE 下調(diào)用anaconda中的庫教程
這篇文章主要介紹了在Python IDLE 下調(diào)用anaconda中的庫教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python腳本實現(xiàn)網(wǎng)卡流量監(jiān)控
這篇文章主要介紹了Python腳本實現(xiàn)網(wǎng)卡流量監(jiān)控,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下2015-02-02

