分享

pandas数据保存至Mysql数据库

 爱因思念l5j0t8 2017-09-15

作者:王大伟

Python爱好者社区唯一小编

博客:https://ask./blog/wangdawei


前言

好久没写文章了,你们想我了没【我就是这样,你习惯就好】

前段时间写了两篇mysql和python交互的文章

第一篇局限于导入一条数据进入数据库【主要讲的是面向对象编程和Python数据库操作基础】

传送门:Python操作Mysql数据库入门——查看和增加记录

第二篇讲的是从数据库读取数据到pandas【为数据分析做准备】

传送门:Python操作Mysql数据库入门——数据导入pandas(数据分析准备)

因为最近又在写爬虫,所以想把爬到的数据(dataframe格式)存在mysql里

终于在今天下午成功了


小试牛刀

import MySQLdb
import pandas as pd
from sqlalchemy import create_engine

host = '127.0.0.1'
port = 3306
db = 'test'
user = 'root'
password = '********'

engine = create_engine(str(r'mysql mysqldb://%s:' '%s' '@%s/%s') % (user, password, host, db))

try:
   df = pd.DataFrame([[1,'x'],[2,'y']],columns=list('ab'))
   df.to_sql('test1',con=engine,if_exists='replace',index=False)
except Exception as e:
   print(e)

注:需要你修改的部分:

(1)db是你本地数据库的名称(你用自己本地的数据库名称)

(2)password是你本地数据库的密码


这里我创建了一个简单的df用于测试:



结果运行成功:


本地数据库自动新建了一个test1表,数据成功写入,(我用的mysql客户端软件是:Navicat)


大显身手

当然,我们平时数据清洗好的df或者爬虫爬到的数据做成df怎么保存到mysql呢?

其实现在看起来就很简单了

当然,在这里,我只教会大家怎么保存df到mysql

如果大家对爬虫和数据分析清洗有兴趣,可以看我以前写的文章


我打开了一个爬虫爬到的房地产数据,如下图:



我们看一下数据的df:



我们现在要将这个df写入mysql,就好比爬到的数据或者清洗完的数据写入mysql:


import MySQLdb
import pandas as pd
from sqlalchemy import create_engine

host = '127.0.0.1'
port = 3306
db = 'test'
user = 'root'
password = '********'

engine = create_engine(str(r'mysql mysqldb://%s:' '%s' '@%s/%s') % (user, password, host, db))

try:
   df = pd.read_csv('house_data.csv')
   df.to_sql('test1',con=engine,if_exists='replace',index=False)
except Exception as e:
   print(e)

注:需要你修改的部分:

(1)db是你本地数据库的名称(你用自己本地的数据库名称)

(2)password是你本地数据库的密码


运行结果是,捕获到了异常:



意思大概是:一部分拉丁无法编码,所以我们设置一下编码方式:charset=utf8

import MySQLdb
import pandas as pd
from sqlalchemy import create_engine

host = '127.0.0.1'
port = 3306
db = 'test'
user = 'root'
password = '********'

engine = create_engine(str(r'mysql mysqldb://%s:' '%s' '@%s/%s?charset=utf8') % (user, password, host, db))

try:
   df = pd.read_csv('house_data.csv')
   df.to_sql('test1',con=engine,if_exists='replace',index=False)
except Exception as e:
   print(e)

注:需要你修改的部分:

(1)db是你本地数据库的名称(你用自己本地的数据库名称)

(2)password是你本地数据库的密码

只修改了这一行代码:

engine = create_engine(str(r'mysql mysqldb://%s:' '%s' '@%s/%s?charset=utf8') % (user, password, host, db))

我们打开本地的数据库,右键刷新:



已经可以看到,数据已经写入mysql了

大家想要加其他功能可以参考:

http://pandas./pandas-docs/stable/generated/pandas.DataFrame.to_sql.html



如有错误之处,请留言评论指出,谢谢~

业务知识一站通,懂业务,让你从技术人才中脱颖而出!

陈老师基于咨询公司从业经验与8年25个项目经验,精心打造业务知识体系课程。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多