天天看點

python調用資料庫_Python之使用Pandas庫實作MySQL資料庫的讀寫

本次分享将介紹如何在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表,内容如下:

python調用資料庫_Python之使用Pandas庫實作MySQL資料庫的讀寫

下面将介紹一個簡單的例子來展示如何在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!')

程式的運作結果如下:

python調用資料庫_Python之使用Pandas庫實作MySQL資料庫的讀寫

在MySQL中檢視mydf表格:

python調用資料庫_Python之使用Pandas庫實作MySQL資料庫的讀寫

這說明我們确實将pandas中建立的DataFrame寫入到了MySQL中!

将CSV檔案寫入到MySQL中

以上的例子實作了使用Pandas庫實作MySQL資料庫的讀寫,我們将再介紹一個執行個體:将CSV檔案寫入到MySQL中,示例的mpg.CSV檔案前10行如下:

python調用資料庫_Python之使用Pandas庫實作MySQL資料庫的讀寫

示例的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表格:

python調用資料庫_Python之使用Pandas庫實作MySQL資料庫的讀寫

僅僅5句Python代碼就實作了将CSV檔案寫入到MySQL中,這無疑是簡單、友善、迅速、高效的!

總結

本文主要介紹了ORM技術以及SQLAlchemy子產品,并且展示了兩個Python程式的執行個體,介紹了如何使用Pandas庫實作MySQL資料庫的讀寫。程式本身并不難,關鍵在于多多練習。

本次分享到此結束,歡迎大家多多交流~~