數據庫版本:MySQL
Python版本:3.5
之前用想用MySQLdb來着,后來發現py3.5版本不支持,現選擇pymysql
現在想將數據庫adidas中的表jd_comment讀取至python中的DataFrame,方便數據分析處理
大眾代碼如下:
import pymysql import pandas as pd import numpy as np try: conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='adidas', charset='UTF8') cur = conn.cursor() cur.execute('select * from jd_comment') rows = cur.fetchall() #獲取元組列表
cur.close() conn.close() except pymysql.Error as e: print('Mysql Error %d: %s' %(e.args[0], e.args[1])) cols = list(zip(*cur.description)) #可以看到列名(由元組構成)
#將數據庫中的數據保存為DataFrame(數據必須是字典或者數組,列表也必須是list或者數組)
adidas = pd.DataFrame(np.array(rows), columns=list(cols[0]))
charset必須和之前數據庫保存一致,否則中文會出現亂碼
簡單說2句:host指的是主機名
user用戶名
passwd密碼
db 數據庫名
rows獲取的是數據庫中Tables的數據行,但是保存的是元組tuple,如若要構造成DataFrame,需轉化為數組或者字典
cols列表中第一個元組保存的是數據庫中Tables的列名,如若要構造成DataFrame,需要轉化為list或數組
詳細可參考Dataframe的用法
看了上述代碼感覺每次導入一個數據庫好繁瑣,下面給出一個精簡版。代碼中的try---except如不需要,也可自行刪除
import pandas.io.sql as sql import pymysql try: conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='adidas', charset='UTF8') adidas = sql.read_sql('select * from jd_comment', conn)#將數據庫讀入dataframe
conn.close() except pymysql.Error as e: print('Mysql Error %d: %s' %(e.args[0], e.args[1]))