社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

pandas数据保存至Mysql数据库

Python爱好者社区 • 6 年前 • 766 次点击  

作者:王大伟

Python爱好者社区唯一小编

博客:https://ask.hellobi.com/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.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html



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

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

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

点击阅读原文立即学习


福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复课程即可获取:

1.崔老师爬虫实战案例免费学习视频。

2.丘老师数据科学入门指导免费学习视频。

3.陈老师数据分析报告制作免费学习视频。

4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

5.丘老师Python网络爬虫实战免费学习视频。


Python爱好者社区


为大家提供与Python相关的最新技术和资讯。

长按指纹 > 识别图中二维码 > 添加关注



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/C923d7VBuA
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3426
 
766 次点击