pandas數據保存至Mysql資料庫
前言
好久沒寫文章了,你們想我了沒【我就是這樣,你習慣就好】
前段時間寫了兩篇mysql和python交互的文章
第一篇局限於導入一條數據進入資料庫【主要講的是面向對象編程和Python資料庫操作基礎】
傳送門:Python操作Mysql資料庫入門——查看和增加記錄
第二篇講的是從資料庫讀取數據到pandas【為數據分析做準備】
傳送門:Python操作Mysql資料庫入門——數據導入pandas(數據分析準備)
因為最近又在寫爬蟲,所以想把爬到的數據(dataframe格式)存在mysql里
終於在今天下午成功了
小試牛刀
import MySQLdbnimport pandas as pdnfrom sqlalchemy import create_enginennhost = 127.0.0.1nport = 3306ndb = testnuser = rootnpassword = ********nnengine = create_engine(str(r"mysql+mysqldb://%s:" + %s + "@%s/%s") % (user, password, host, db))nntry:n df = pd.DataFrame([[1,x],[2,y]],columns=list(ab))n df.to_sql(test1,con=engine,if_exists=replace,index=False)nexcept Exception as e:n print(e)n
註:需要你修改的部分:
(1)db是你本地資料庫的名稱(你用自己本地的資料庫名稱)
(2)password是你本地資料庫的密碼
這裡我創建了一個簡單的df用於測試:
結果運行成功:
本地資料庫自動新建了一個test1表,數據成功寫入,(我用的mysql客戶端軟體是:Navicat)
大顯身手
當然,我們平時數據清洗好的df或者爬蟲爬到的數據做成df怎麼保存到mysql呢?
其實現在看起來就很簡單了
當然,在這裡,我只教會大家怎麼保存df到mysql
如果大家對爬蟲和數據分析清洗有興趣,可以看我以前寫的文章
我打開了一個爬蟲爬到的房地產數據,如下圖:
我們看一下數據的df:
我們現在要將這個df寫入mysql,就好比爬到的數據或者清洗完的數據寫入mysql:
import MySQLdbnimport pandas as pdnfrom sqlalchemy import create_enginennhost = 127.0.0.1nport = 3306ndb = testnuser = rootnpassword = ********nnengine = create_engine(str(r"mysql+mysqldb://%s:" + %s + "@%s/%s") % (user, password, host, db))nntry:n df = pd.read_csv(house_data.csv)n df.to_sql(test1,con=engine,if_exists=replace,index=False)nexcept Exception as e:n print(e)n
註:需要你修改的部分:
(1)db是你本地資料庫的名稱(你用自己本地的資料庫名稱)
(2)password是你本地資料庫的密碼
運行結果是,捕獲到了異常:
意思大概是:一部分拉丁無法編碼,所以我們設置一下編碼方式:charset=utf8
import MySQLdbnimport pandas as pdnfrom sqlalchemy import create_enginennhost = 127.0.0.1nport = 3306ndb = testnuser = rootnpassword = ********nnengine = create_engine(str(r"mysql+mysqldb://%s:" + %s + "@%s/%s?charset=utf8") % (user, password, host, db))nntry:n df = pd.read_csv(house_data.csv)n df.to_sql(test1,con=engine,if_exists=replace,index=False)nexcept Exception as e:n print(e)n
註:需要你修改的部分:
(1)db是你本地資料庫的名稱(你用自己本地的資料庫名稱)
(2)password是你本地資料庫的密碼
只修改了這一行代碼:
engine = create_engine(str(r"mysql+mysqldb://%s:" + %s + "@%s/%s?charset=utf8") % (user, password, host, db))n
我們打開本地的資料庫,右鍵刷新:
已經可以看到,數據已經寫入mysql了
大家想要加其他功能可以參考:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html
如有錯誤之處,請留言評論指出,謝謝~
作者:王大偉 Python愛好者社區唯一小編,請勿轉載,謝謝。
出處:pandas數據保存至Mysql資料庫 配套視頻教程:Python3爬蟲三大案例實戰分享:貓眼電影、今日頭條街拍美圖、淘寶美食 Python3爬蟲三大案例實戰分享公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容。
小編主講: 雙十一,一小時破冰Python, 數據小白華麗轉身第一步 1小時破冰入門Python
推薦閱讀:
※MySQL訓練——Self join@sqlzoo.net
※為何Redis用樂觀鎖,而MySQL資料庫卻沒有?
※為什麼我不再看好MariaDB
※MYSQL及MySQL WORKBENCH安裝過程遇到的問題及處理方法