Python 利用pandas和mysql-connector獲取Excel數(shù)據(jù)寫入到MySQL數(shù)據(jù)庫
如何將Excel數(shù)據(jù)插入到MySQL數(shù)據(jù)庫中
在實際應用中,我們可能需要將Excel表格中的數(shù)據(jù)導入到MySQL數(shù)據(jù)庫中,以便于進行進一步的數(shù)據(jù)分析和處理。本文將介紹如何使用Python將Excel表格中的數(shù)據(jù)插入到MySQL數(shù)據(jù)庫中。
導入必要的庫
首先,我們需要導入pandas庫和MySQL Connector/Python庫,以便于讀取Excel文件和連接MySQL數(shù)據(jù)庫。
import pandas as pd # 導入pandas庫,用于讀取Excel文件和處理數(shù)據(jù) import mysql.connector # 導入MySQL Connector/Python庫,用于連接MySQL數(shù)據(jù)庫
連接數(shù)據(jù)庫
接下來,我們需要連接MySQL數(shù)據(jù)庫??梢酝ㄟ^MySQL Connector/Python庫提供的connect()方法來連接數(shù)據(jù)庫。
# 連接數(shù)據(jù)庫
mydb = mysql.connector.connect(
host=host, # 數(shù)據(jù)庫主機地址
user=user, # 數(shù)據(jù)庫用戶名
password=password, # 數(shù)據(jù)庫密碼
database=database # 數(shù)據(jù)庫名稱
)其中,host、user、password和database分別是數(shù)據(jù)庫主機地址、數(shù)據(jù)庫用戶名、數(shù)據(jù)庫密碼和數(shù)據(jù)庫名稱,需要根據(jù)實際情況進行修改。
創(chuàng)建游標對象
連接成功后,我們需要創(chuàng)建游標對象??梢酝ㄟ^MySQL Connector/Python庫提供的cursor()方法來創(chuàng)建游標對象。
# 創(chuàng)建游標對象 mycursor = mydb.cursor()
讀取Excel文件
接下來,我們需要讀取Excel文件中的數(shù)據(jù)??梢允褂胮andas庫提供的read_excel()方法來讀取Excel文件。
# 讀取Excel文件 df = pd.read_excel(filename)
其中,filename是Excel文件的路徑,需要根據(jù)實際情況進行修改。
將日期時間類型的列轉換為字符串類型
在將數(shù)據(jù)插入到MySQL數(shù)據(jù)庫中之前,我們需要將日期時間類型的列轉換為字符串類型??梢酝ㄟ^遍歷DataFrame中的每一列,并判斷該列的數(shù)據(jù)類型是否為日期時間類型,然后將該列的數(shù)據(jù)類型轉換為字符串類型。
# 將日期時間類型的列轉換為字符串類型
for col in df.columns: # 遍歷DataFrame中的每一列
if df[col].dtype == 'datetime64[ns]': # 如果該列的數(shù)據(jù)類型是日期時間類型
df[col] = df[col].astype(str) # 將該列的數(shù)據(jù)類型轉換為字符串類型遍歷Excel表格中的每一行,并將每一行插入到數(shù)據(jù)庫中
接下來,我們需要遍歷Excel表格中的每一行,并將每一行插入到數(shù)據(jù)庫中??梢允褂胮andas庫提供的itertuples()方法來遍歷DataFrame中的每一行,并使用MySQL Connector/Python庫提供的execute()方法來執(zhí)行SQL插入語句。
# 遍歷Excel表格中的每一行,并將每一行插入到數(shù)據(jù)庫中
for row in df.itertuples(index=False): # 遍歷DataFrame中的每一行
sql = f"INSERT INTO {table} (id, 姓名, 國家, 出生日期) VALUES (%s, %s, %s, %s)" # SQL插入語句
val = row # 插入的數(shù)據(jù)
mycursor.execute(sql, val) # 執(zhí)行SQL插入語句
print("正在插入數(shù)據(jù):", val) # 輸出正在插入的數(shù)據(jù)其中,table是數(shù)據(jù)庫表名,需要根據(jù)實際情況進行修改。
提交更改并關閉數(shù)據(jù)庫連接
最后,我們需要提交更改并關閉數(shù)據(jù)庫連接??梢允褂肕ySQL Connector/Python庫提供的commit()方法來提交更改,并使用close()方法來關閉游標對象和數(shù)據(jù)庫連接。
# 提交更改并關閉數(shù)據(jù)庫連接 mydb.commit() # 提交更改 mycursor.close() # 關閉游標對象 mydb.close() # 關閉數(shù)據(jù)庫連接
完整代碼如下:
import pandas as pd # 導入pandas庫,用于讀取Excel文件和處理數(shù)據(jù)
import mysql.connector # 導入MySQL Connector/Python庫,用于連接MySQL數(shù)據(jù)庫
def insert_excel_data_to_mysql(filename, host, user, password, database, table):
# 連接數(shù)據(jù)庫
mydb = mysql.connector.connect(
host=host, # 數(shù)據(jù)庫主機地址
user=user, # 數(shù)據(jù)庫用戶名
password=password, # 數(shù)據(jù)庫密碼
database=database # 數(shù)據(jù)庫名稱
)
# 創(chuàng)建游標對象
mycursor = mydb.cursor()
# 讀取Excel文件
df = pd.read_excel(filename)
# 將日期時間類型的列轉換為字符串類型
for col in df.columns: # 遍歷DataFrame中的每一列
if df[col].dtype == 'datetime64[ns]': # 如果該列的數(shù)據(jù)類型是日期時間類型
df[col] = df[col].astype(str) # 將該列的數(shù)據(jù)類型轉換為字符串類型
# 遍歷Excel表格中的每一行,并將每一行插入到數(shù)據(jù)庫中
for row in df.itertuples(index=False): # 遍歷DataFrame中的每一行
sql = f"INSERT INTO {table} (id, 姓名, 國家, 出生日期) VALUES (%s, %s, %s, %s)" # SQL插入語句
val = row # 插入的數(shù)據(jù)
mycursor.execute(sql, val) # 執(zhí)行SQL插入語句
print("正在插入數(shù)據(jù):", val) # 輸出正在插入的數(shù)據(jù)
# 提交更改并關閉數(shù)據(jù)庫連接
mydb.commit() # 提交更改
mycursor.close() # 關閉游標對象
mydb.close() # 關閉數(shù)據(jù)庫連接
# 使用示例
filename = r'C:\\Users\\Admin\\Desktop\\重新開始\\Python操作MySQL數(shù)據(jù)庫\\sheet1.xlsx' # Excel文件路徑
host = "localhost" # 數(shù)據(jù)庫主機地址
user = "root" # 數(shù)據(jù)庫用戶名
password = "123456" # 數(shù)據(jù)庫密碼
database = "caiwu" # 數(shù)據(jù)庫名稱
table = "yonghu" # 數(shù)據(jù)庫表名
insert_excel_data_to_mysql(filename, host, user, password, database, table) # 調用函數(shù),將Excel數(shù)據(jù)插入到MySQL數(shù)據(jù)庫中到此這篇關于Python 利用pandas和mysql-connector獲取Excel數(shù)據(jù)寫入到MySQL數(shù)據(jù)庫的文章就介紹到這了,更多相關Python獲取Excel數(shù)據(jù)寫入到MySQL數(shù)據(jù)庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
pandas.DataFrame Series排序的使用(sort_values,sort_index)
本文主要介紹了pandas.DataFrame Series排序的使用(sort_values,sort_index),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02
Python面向對象程序設計構造函數(shù)和析構函數(shù)用法分析
這篇文章主要介紹了Python面向對象程序設計構造函數(shù)和析構函數(shù)用法,結合具體實例形式分析了Python面向對象程序設計中構造函數(shù)與析構函數(shù)的概念、原理、功能及相關使用技巧,需要的朋友可以參考下2019-04-04
解決numpy矩陣相減出現(xiàn)的負值自動轉正值的問題
這篇文章主要介紹了解決numpy矩陣相減出現(xiàn)的負值自動轉正值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python中使用zip函數(shù)出現(xiàn)<zip object at 0x02A9E418>錯誤的原因
這篇文章主要介紹了python中使用zip函數(shù)出現(xiàn)<zip object at 0x02A9E418>錯誤的原因分析及解決方法,需要的朋友可以參考下2018-09-09

