本次分享将介紹如何在Python中使用Pandas庫實作MySQL資料庫的讀寫。首先我們需要了解點ORM方面的知識。
ORM技術
對象關系映射技術,即ORM(Object-Relational Mapping)技術,指的是把關系資料庫的表結構映射到對象上,通過使用描述對象和資料庫之間映射的中繼資料,将程式中的對象自動持久化到關系資料庫中。
在Python中,最有名的ORM架構是SQLAlchemy。Java中典型的ORM中間件有:Hibernate,ibatis,speedframework。
SQLAlchemy
SQLAlchemy是Python程式設計語言下的一款開源軟體。提供了SQL工具包及對象關系映射(ORM)工具,使用MIT許可證發行。
可以使用pip指令安裝SQLAlchemy子產品:
pip install sqlalchemy
SQLAlchemy子產品提供了create_engine()函數用來初始化資料庫連接配接,SQLAlchemy用一個字元串表示連接配接資訊:
'資料庫類型+資料庫驅動名稱://使用者名:密碼@機器位址:端口号/資料庫名'
Pandas讀寫MySQL資料庫
我們需要以下三個庫來實作Pandas讀寫MySQL資料庫:
pandas
sqlalchemy
pymysql
其中,pandas子產品提供了read_sql_query()函數實作了對資料庫的查詢,to_sql()函數實作了對資料庫的寫入,并不需要實作建立MySQL資料表。sqlalchemy子產品實作了與不同資料庫的連接配接,而pymysql子產品則使得Python能夠操作MySQL資料庫。
我們将使用MySQL資料庫中的mydb資料庫以及employee表,内容如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI2QzNwEjM0EDMwADMwYDNx8CXlR3btVmcvw1Ztl2Lc12bj5CdsVXYmRnbl12ZlN3Lc9CX6MHc0RHaiojIsJye.jpg)
下面将介紹一個簡單的例子來展示如何在pandas中實作對MySQL資料庫的讀寫:
# -*- coding: utf-8 -*-
# 導入必要子產品
import pandas as pd
from sqlalchemy import create_engine
# 初始化資料庫連接配接,使用pymysql子產品
# MySQL的使用者:root, 密碼:147369, 端口:3306,資料庫:mydb
engine = create_engine('mysql+pymysql://root:[email protected]:3306/mydb')
# 查詢語句,選出employee表中的所有資料
sql = '''
select * from employee;
'''
# read_sql_query的兩個參數: sql語句, 資料庫連接配接
df = pd.read_sql_query(sql, engine)
# 輸出employee表的查詢結果
print(df)
# 建立pandas中的DataFrame, 隻有id,num兩列
df = pd.DataFrame({'id':[1,2,3,4],'num':[12,34,56,89]})
# 将建立的DataFrame儲存為MySQL中的資料表,不儲存index列
df.to_sql('mydf', engine, index= False)
print('Read from and write to Mysql table successfully!')
程式的運作結果如下:
在MySQL中檢視mydf表格:
這說明我們确實将pandas中建立的DataFrame寫入到了MySQL中!
将CSV檔案寫入到MySQL中
以上的例子實作了使用Pandas庫實作MySQL資料庫的讀寫,我們将再介紹一個執行個體:将CSV檔案寫入到MySQL中,示例的mpg.CSV檔案前10行如下:
示例的Python代碼如下:
# -*- coding: utf-8 -*-
# 導入必要子產品
import pandas as pd
from sqlalchemy import create_engine
# 初始化資料庫連接配接,使用pymysql子產品
engine = create_engine('mysql+pymysql://root:[email protected]:3306/mydb')
# 讀取本地CSV檔案
df = pd.read_csv("E://mpg.csv", sep=',')
# 将建立的DataFrame儲存為MySQL中的資料表,不儲存index列
df.to_sql('mpg', engine, index= False)
print("Write to MySQL successfully!")
在MySQL中檢視mpg表格:
僅僅5句Python代碼就實作了将CSV檔案寫入到MySQL中,這無疑是簡單、友善、迅速、高效的!
總結
本文主要介紹了ORM技術以及SQLAlchemy子產品,并且展示了兩個Python程式的執行個體,介紹了如何使用Pandas庫實作MySQL資料庫的讀寫。程式本身并不難,關鍵在于多多練習。
本次分享到此結束,歡迎大家多多交流~~