在目前大数据和人工智能的大趋势下,越来越多的人开始学习python作为自己入手数据和AI的第一门语言,笔者也是如此。很多人在接触python的第一步都是学习pandas,主要是这个框架是最接近于R和Matlab学习起来轻松易懂。但是在pandas的使用中,有很多问题和很多人因为对编程和计算机概念不理解,导致很多很多的坑,笔者在此开一个系列博文,不定期更新中会将自己遇到的坑介绍给大家。

pandas坑之to_sql

pandas是将格式化数据直接编程python可读的DataFrame格式(其实本质上就是字典,并且自动设置了index和colunms),pandas本身的操作给了用户很好的体验和数据分析过程,但是pandas从数据库读取再转录入数据库是不少新人一直头疼的问题,笔者也为此最初头疼不已。根据《利用python进行数据分析》的书中,有大致介绍一个函数——to_sql,相信很多人都是对此了解的。

但是,使用to_sql这个函数有一个问题,虽然to_sql函数可以直接将字典数据直接存入数据库,但是,to_sql限制是非常之大的(毕竟别人写的类)

我们先看一个操作

import pandas as pd

import pymysql

conn=pymysql.connect(host,port,user,password,charset,db)

df1=pd.DataFrame(list)

df.to_sql(tablename,conn)

相信很多人都是按照以上进行的傻瓜操作,但是笔者在这里只能告诉你们,这是大错特错的。

要学习python最快的方法,并不是上什么培训班,看视频,最快的方法,就是去阅读python的库文档,python手册。毕竟python虽然在使用上非常难,但是在学习上并不是特别难(相对于java和C++)。

根据库的文档,我们看到to_sql函数支持两类mysql引擎一个是sqlalchemy,另一个是sqlliet3.没错,在你写入库的时候,pymysql是不能用的!!!mysqldb也是不能用的,你只能使用sqlalchemy或者sqlliet3!!鉴于sqllift3已经很久没有更新了,笔者这里建议使用sqlalchemy!!

所以上面那段要改写成下面这样:

import pandas as pd

from sqlalchemy import create_engine

conn = create_engine('mysql+mysqldb://root:password@localhost:3306/databasename?charset=utf8')

下面一步很关键,注意!!!to_sql函数并不在pd之中,而是在io.sql之中,是sql脚本下的一个类!!!所以to_sql的最好写法就是:

pd.io.sql.to_sql(df1,tablename,con=conn,if_exists='repalce')

是不是感觉大功告成了???

那是你的错觉,赶紧回到数据库看看吧!!你会发现WTF为什么我原来的数据都没有了!!

这就是to_sql的第二个坑if_exists字段:

很多新人按照网上的教程,都将if_exists字段定义为‘replace’活着‘fail’,要么发现原来数据没有了,要么发现什么时候都没有做!

麻烦请各位新人仔细阅读文档!!!

fail的意思如果表存在,啥也不做

replace的意思,如果表存在,删了表,再建立一个新表,把数据插入

append的意思,如果表存在,把数据插入,如果表不存在创建一个表!!

你看懂了吗,所以大家一定要读文档!读文档!!读文档!!!

那些年我们在python掉进的坑系列之一pandas的to_sql相关推荐

  1. 【S操作】轻松优雅防止(解决)两次掉进同一坑的完美解决方案,arduino通知提醒方案...

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 搞技术,经常掉坑里是正常的,但掉进同一个坑两次就有点不能忍了,为了防止第三次掉坑,我 ...

  2. 【S操作】轻松优雅防止(解决)两次掉进同一坑的完美解决方案

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 搞技术,经常掉坑里是正常的,但掉进同一个坑两次就有点不能忍了,为了防止第三次掉坑,我 ...

  3. Sophus + ceres做 SE3(位姿)优化可能掉进的坑

    利用Sophus和ceres做位姿优化可能掉进的坑 这个问题和数据存储顺序及update时使用的SE3::exp(Eigen::Matrix<double,6,1> &a)操做有关 ...

  4. 【Python|Kaggle】机器学习系列之Pandas基础练习题(五)

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  5. 【Python|Kaggle】机器学习系列之Pandas基础练习题(四)

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  6. 自学编程的人,90%以上都会掉进这些坑,避开这些误区能提高N倍学习效率

    前言 几乎每一个程序员都会走上那么一段自学的道路,尤其是在校生或进入工作岗位之后,技术的提升基本都靠自学,有的虽然是网上报班学习,但更多时候还是自己在学习,师傅引进门,修行靠个人. 有的人自学很快,几 ...

  7. STM32F0 定时器中断 小白掉进的坑(FreeModbus)Timeout

    1)STM32F0有多个定时器,对应多个IRQn TIM1_BRK_UP_TRG_COM_IRQn    = 13,     /*!< TIM1 Break, Update, Trigger a ...

  8. 电视台,做直播别掉进这些坑,踩了这些雷

    互联网直播经过一轮又一轮的概念追捧炒作,又经过了一波又一波的资本追逐洗礼,终于在2017年第一季度过后,逐步褪去了光环,众神归位,直播回到本质--直播只是工具和手段,内容才是核心. 作为后知后觉的直播 ...

  9. 为什么学微电子的都怕掉进材料的坑?

    一般来说,微电子学院是分很多方向的,有材料.器件.工艺和电路设计,电路设计又分为数字和模拟,看似都是微电子专业,但之后所要走的路却是截然不同的. 早些年,微电子及其前身半导体专业就是研究如何把材料加工 ...

最新文章

  1. HDU3072(Kosaraju算法)
  2. linux split
  3. And it's over,And it's a new start
  4. latex插入表格_如何将word表格变成LaTeX代码?
  5. tab使用 TabActivity TabHost Tabspec常用方法
  6. Java高级篇 -- List选择及优化
  7. 操作系统上机题目(多进程2)
  8. linux 网络协议栈变化,ZZ Linux网络协议栈学习
  9. vs矩形框边框线显示被选中的区域;_条形码区域解码:Web小工具
  10. luci L大_智慧城市大讲堂 l 大咖说5G智慧大交通
  11. [翻译]在Asp.net 2.0中操作数据::母板页和站点导航
  12. Nginx配置静态资源
  13. Ubuntu12.04和12.10下H3C iNode客户端安装时出现找不到库的解决办法
  14. asp.net 正在加载效果实现
  15. Python 数据结构与算法——图(Graph)
  16. arcgis js平滑线工具_Arcgis中文字体、平滑线插件使用说明
  17. 《企业大数据系统构建实战:技术、架构、实施与应用》——2.3 大数据制度和流程规范...
  18. 抖音上好看的小姐姐,Python给你都下载了
  19. Micropython教程之TPYBoard DIY电子时钟(萝卜学科编程教育)
  20. python 词汇表_使用Counter构建词汇表

热门文章

  1. 【Pandas实战】足球运动员数据分析
  2. 中小型软件开发项目管理
  3. 基于爬虫爬取的数据,完成数据展示网站
  4. 腾讯微服务框架 Tars 的 Go 性能提升之路
  5. linux电脑开机蓝屏,Windows 7电脑开机蓝屏怎么办 电脑开机蓝屏解决方法linux操作系统 -电脑资料...
  6. drupal 中基本的数据库操作
  7. 攻防世界逆向高手题之dmd-50
  8. 阿D SQL注入工具常用的一些注入命令
  9. 如何利用业余时间学习Python,有没有比较完整的规划。。
  10. 目标检测—安全帽检测实践