使用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 Django框架实现自定义表单提交
Mar 25 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
Python实现简单网页图片抓取完整代码实例
Dec 15 Python
对python append 与浅拷贝的实例讲解
May 04 Python
python实现支付宝当面付(扫码支付)功能
May 30 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
python批量获取html内body内容的实例
Jan 02 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 Python
flask项目集成swagger的方法
Dec 09 Python
Pytest中conftest.py的用法
Jun 27 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
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
vue2组件实现懒加载浅析
2017/03/29 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
Bootstrap输入框组件使用详解
2017/06/09 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
python读文件的步骤
2019/10/08 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
个人安全承诺书
2014/05/22 职场文书
决心书格式及范文
2019/06/24 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python