python把数据框写入MySQL

背景

手里头有一份上海市2016年9月1日公共交通卡刷卡数据
在这里插入图片描述
想做一下上海市通勤数据挖掘,由于源文件有800多兆,用python读取起来很慢很卡,于是想导入数据库MySQL里面处理,以前一般是打开workbench可视化操作导入数据库,这次想换成代码实现,于是琢磨着如何把这个csv文件用python导进去。
一般的,python把数据框写入数据库有两种方法

  • 利用insert into 命令一条一条插入
    之前爬虫都是采用这种方法,可以爬一条立马向数据库里面插入一条数据,整体衔接好,不怕大量数据一次性塞进数据库导致拥堵;

  • pd.io.sql.to_sql( )整个数据框以追加的方式整体复制进去

今天主要研究第二种方法

完整代码

import pandas as pd  #导入数据分析模块
import pymysql #导入数据库接口模块
from sqlalchemy import create_engine
data=pd.read_csv(r"D:\数据\yikatongchengkeshuakashuju\201608\SPTCC20160901.csv",engine='python',header=None) #读取数据encoding='mbcs',
data.columns=["卡号","日期","时间","站点","交通方式","费用","是否有优惠"] #由于原csv文件没有表头,这里添加表头
#print(data.head()) #测试

db=pymysql.connect("localhost","root","123456","metro_sh",charset="utf8") #链接数据库metro_sh
cursor=db.cursor() #获取游标
cursor.execute("drop table if exists metro_sh_20160901") #以重新写入的方式导入数据表
connect=create_engine("mysql+pymysql://root:123456@localhost:3306/metro_sh?charset=utf8")
pd.io.sql.to_sql(data,"metro_sh_20160901",connect,schema="metro_sh",index=False,if_exists="append")

结果截图

在这里插入图片描述

代码解读

  • create_engine( )参数说明:
    create_engine(mysql+mysqldb://用户名:密码@localhost:端口/数据库名?编码)
    设置数据库的编码方式的时候最好与之前pd.read_csv()中的encoding参数一致

  • pd.io.sql.to_sql( )参数说明:
    (数据框, ‘表名’, con=连接键, schema=‘数据库名’, if_exists=‘操作方式’)
    操作方式有append、fail、replace
    append:如果表存在,则将数据添加到这个表的后面
    fail:如果表存在就不写入
    replace:如果存在表,删了,覆盖

方法评论

该方法整体性好,内存消耗大,如果内存大可以一试。

在这里插入图片描述

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三行数学

赞赏也是一种肯定!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值