使用python的pandas库读取csv文件保存至mysql数据库


Posted in Python onAugust 20, 2018

第一:pandas.read_csv读取本地csv文件为数据框形式

data=pd.read_csv('G:\data_operation\python_book\chapter5\\sales.csv')

第二:如果存在日期格式数据,利用pandas.to_datatime()改变类型

data.iloc[:,1]=pd.to_datetime(data.iloc[:,1])

注意:=号,这样在原始的数据框中,改变了列的类型

第三:查看列类型

print(data.dtypes)

第四:方法一:保存至MYSQL【缺点耗时长】

利用MYSQLdb库,封装成一个类,实现创建表,添加数据的操作,缺点耗时长

class Jess_mysql():
 """
 设置mysql类,实现创建数据框,表,及添加数据
 """
 def __init__(self):
  self.mysql=MySQLdb.connect(user=mysql_name,host=mysql_host,password=mysql_password,database=mysql_database)
  self.conn=self.mysql.cursor()
 def create_table(self,table_names,col_names):
  """
  创建表
  :param table_names: 表名
  :param col_names: 列名,列表格式
  :return:
  """
  tables=' varchar(20),'.join(['%s'] *len(col_names))
  sql_yuju='create table if not exists `{t}` ({v} varchar(20))'.format(t=table_names,v=tables)#字段需要标注格式
  ss=sql_yuju %(tuple(col_names))
  print(ss)
  self.conn.execute(ss)
  self.mysql.commit()
 def add_data(self,table_name,col_names,col_data):
  """
  :param table_name: 表名
  :param col_names: 列名,字段名
  :param col_data: 字段值
  :return:
  """
  colname=','.join(['%s']*len(col_names))
  data=','.join(['%s']*len(col_data))
  sql_yuju='INSERT INTO `{t}` ({name}) VALUES ({data});'.format(t=table_name,name=colname,data=data)
  ss=sql_yuju%(*col_names,*col_data)
  #print(ss)
  self.conn.execute(ss)
  self.mysql.commit()

第五:利用sqlalchemy的create_engine()方法

1、创建连接

import sqlalchemy
#engine=sqlalchemy.create_engine('mysql + mysqldb://root:123456@118.24.26.227:3306/python_yuny')
engine=sqlalchemy.create_engine('mysql+mysqldb://{user}:{password}@{host}:3306/{database}'.format
        (user=mysql_name,password=mysql_password,host=mysql_host,database=mysql_database))

2、利用pd.io.sql.to_sql()

pd.io.sql.to_sql(frame=data,name='yunying',con=engine,index=False,if_exists='append')

注意相关参数的设置。

此外,保存到mysql中,需要注意日期格式的列,因为在mysql对应的field设置格式为varchar(20)后,原始的日期2015-8-9,写入数据库,只有2015,这需要两步操作。

a、上面第二目录的,利用pandas.to_datetime(,format='%Y-%m-%d')       #format的格式要和原始字符2016-8-9格式一样

b、利用datetime库,实现format='%Y%m%d'

x=data.shape[0]
for i in range(x):
 col_data=list(df.iloc[i,:])
 col_data[1]=datetime.date.strftime(col_data[1],'%Y%d%m')

•这一步后,日期格式由原始的2016-6-2,转为20160606,就可以以写入数据库对应的字段【其字段类型varchar(20)】

第六:读取mysql的数据

df=pd.read_sql('select * from %s'%table_name,con=engine,index_col=None)

默认不设置索引列,可以自行指定索引列名。

总结

以上所述是小编给大家介绍的使用python的pandas库读取csv文件保存至mysql数据库,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
Python(Django)项目与Apache的管理交互的方法
May 16 Python
python实现顺序表的简单代码
Sep 28 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
python自动化UI工具发送QQ消息的实例
Aug 27 Python
python自动生成model文件过程详解
Nov 02 Python
Pytorch之parameters的使用
Dec 31 Python
python线程join方法原理解析
Feb 11 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 Python
python输出数学符号实例
May 11 Python
Python多线程原理与用法详解
Aug 20 #Python
Python模拟简单电梯调度算法示例
Aug 20 #Python
django_orm查询性能优化方法
Aug 20 #Python
Python Requests库基本用法示例
Aug 20 #Python
Django中使用第三方登录的示例代码
Aug 20 #Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 #Python
分析python请求数据
Aug 19 #Python
You might like
扩展你的 PHP 之入门篇
2006/12/04 PHP
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python内建数据结构详解
2016/02/03 Python
Python中str.format()详解
2017/03/12 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
软件工程师面试题
2012/06/25 面试题
学习党章思想汇报
2014/01/07 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
公司年底活动方案
2014/08/17 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
2014年医生工作总结
2014/11/21 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
高三教师工作总结2015
2015/07/21 职场文书
初一年级组工作总结
2015/08/12 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
深入理解python多线程编程
2021/04/18 Python
Python Numpy库的超详细教程
2022/04/06 Python
MySQL查询日期时间
2022/05/15 MySQL
nginx之内存池的实现
2022/06/28 Servers