在網上找了若干篇教程,一頓操作猛如虎之後發現,大多數教程推薦的 MySQLdb好像不行啊,是python 2。x的。。。這年頭不該預設主流python 3。x了嘛?

又針對python 3。x檢索了一番,找到了PyMySQL(參見菜鳥教程-PyMySQL驅動)。能用是能用,但還是有點不太對啊,這查詢出來儲存為字串了,要弄成結構化的還要寫for迴圈。。。這操作未免也太不python了不是?

所以用“pandas+MySQL”作為關鍵詞第三遍搜尋,終於找到了優雅的答案,現整理出來和大家分享。全文分為python

連線、讀取、寫入

資料庫三部分。

Part 1。 Python連線資料庫

首先,在cmd裡安裝pandas、sqlalchemy、pymysql三個包(pymysql也可用mysqlconnector替換,兩者都可以連線MySQL資料庫):

pip install pandas

pip install sqlalchemy

pip install pymysql

初始化資料庫連線:

import

pandas

as

pd

from

sqlalchemy

import

create_engine

# 初始化資料庫連線

# 按實際情況依次填寫MySQL的使用者名稱、密碼、IP地址、埠、資料庫名

engine

=

create_engine

‘mysql+pymysql://root:12345678@localhost:3306/testdb’

# 如果覺得上方程式碼不夠優雅也可以按下面的格式填寫

# engine = create_engine(“mysql+pymysql://{}:{}@{}:{}/{}”。format(‘root’, ‘12345678’, ‘localhost’, ‘3306’, ‘testdb’))

這裡“mysql+pymysql://”是指明透過pymysql這個包來連線資料庫,也可以使用mysqlconnector;如果是python2。x可以替換為MySQLdb來連線。MySQL的IP地址和埠號,預設為localhost:3306。

Part 2。 Python讀取資料庫

寫好查詢語句並執行,將結果存入資料框DataFrame:

# MySQL匯入DataFrame

# 填寫自己所需的SQL語句,可以是複雜的查詢語句

sql_query

=

‘select * from product;’

# 使用pandas的read_sql_query函式執行SQL語句,並存入DataFrame

df_read

=

pd

read_sql_query

sql_query

engine

print

df_read

檢視該資料框df_read:

Python連線mysql資料庫極簡教程(pandas)

Part 3。 Python寫入資料庫

# DataFrame寫入MySQL

# 新建DataFrame

df_write

=

pd

DataFrame

({

‘id’

10

27

34

46

],

‘name’

‘張三’

‘李四’

‘王五’

‘趙六’

],

‘score’

80

75

56

99

]})

# 將df儲存為MySQL中的表,不儲存index列

df_write

to_sql

‘testdf’

engine

index

=

False

在MySQL中檢視該表:

Python連線mysql資料庫極簡教程(pandas)

Reference

https://

blog。csdn。net/lzw2016/a

rticle/details/84720433

2。

https://www。

jianshu。com/p/238a13995

b2b

3。

https://www。

runoob。com/python3/pyth

on3-mysql。html