使用Python读Excel数据Insert到MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

#!/usr/bin/env python

#coding:utf-8

import xlrd

import MySQLdb

import datetime

 

 

xlsfile=r'C:\Users\XUWU\Desktop\data.xlsx'

book = xlrd.open_workbook(xlsfile)

#获取sheet的数量

count = len(book.sheets()) 

#设置连接数据库

database = MySQLdb.connect(host='192.168.1.30',user='root',passwd='123456',db='crm')

#设置字符集

database.set_character_set('utf8')

cursor = database.cursor()

cursor.execute('SET NAMES utf8;') 

cursor.execute('SET CHARACTER SET utf8;')

cursor.execute('SET character_set_connection=utf8;')

 

starttime = datetime.datetime.now()

print '开始时间:%s' % (starttime)

 

#循环sheet

for i in range(0,count-1):

    sheet = book.sheet_by_index(i) 

    query = """INSERT INTO bill_test ( member_id, name, tel, phone, dq_datetime, address, parking) VALUES ( %s, %s, %s, %s, %s, %s, %s)"""

    #循环每一行

    for r in range(1, sheet.nrows):

         

        #idseq      = sheet.cell(r,0).value

        member_id   = sheet.cell(r,1).value

        name        = sheet.cell(r,2).value

        tel         = sheet.cell(r,3).value

        phone       = sheet.cell(r,4).value

        #dq_datetime = sheet.cell(r,5).value

        #读日期这里要处理一下,不然全变成数字了

        dq_datetime_num=xlrd.xldate_as_tuple(sheet.cell(r,5).value,0)

        dq_datetime = '%s/%s/%s' % (dq_datetime_num[0],dq_datetime_num[1],dq_datetime_num[2])

        address     = sheet.cell(r,6).value

        parking     = sheet.cell(r,7).value

  

        values = (member_id, name, tel, phone, dq_datetime, address, parking)

        #print query,values

        cursor.execute(query, values)

     

cursor.close()

database.commit()

database.close()

endtime=datetime.datetime.now()

print '结束时间:%s' % (endtime)

print '用时:%s 秒' % (endtime-starttime)



CREATE TABLE `bill_test` (

  `idseq` mediumint(10) unsigned NOT NULL AUTO_INCREMENT,

  `member_id` int(10) DEFAULT NULL,

  `name` varchar(20) DEFAULT NULL,

  `tel` varchar(20) DEFAULT NULL,

  `phone` varchar(20) DEFAULT NULL,

  `dq_datetime` varchar(20) DEFAULT NULL,

  `address` varchar(200) DEFAULT NULL,

  `parking` varchar(200) DEFAULT NULL,

  PRIMARY KEY (`idseq`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 |


使用Python从 MySQL写数据到Excel

#!/usr/bin/env python

#coding:utf-8

 

import xlwt

import MySQLdb

import datetime

 

database = MySQLdb.connect(host='192.168.1.30',user='root',passwd='123456',db='crm')

#设置字符集

database.set_character_set('utf8')

cursor = database.cursor()

cursor.execute('SET NAMES utf8;') 

cursor.execute('SET CHARACTER SET utf8;')

cursor.execute('SET character_set_connection=utf8;')

 

starttime = datetime.datetime.now()

print '开始时间:%s' % (starttime)

 

#通过SQL得到该表有多少行,如果想取出指定的数据,只需要在后面加where条件即可。

sql2 = 'select count(*) from bill_test;';

cursor.execute(sql2)

count_rows=cursor.fetchone()[0]

 

wbk = xlwt.Workbook(encoding='utf-8',style_compression=0)

sheet = wbk.add_sheet('sheet 1', cell_overwrite_ok=True)

#设置写excel的样式

style = xlwt.XFStyle()

font = xlwt.Font()

font.name = 'Times New Roman'

#0x0190设置字体为20,默认为0x00C8 字体为10 ,0x00C8为十六进制的数字

font.height = 0x0190

font.bold = True

style.font = font

#查询得到该表有多少列

query_colums="select count(*) from information_schema.COLUMNS where TABLE_SCHEMA='crm' and table_name='bill_test';"

cursor.execute(query_colums)

count_cols = cursor.fetchone()[0]

 

sql = 'select member_id, name, tel, phone, dq_datetime, address, parking from bill_test;'

cursor.execute(sql)

 

#定义所有的列名,共7列

columnName = ['账号','名称','电话','手机','到期日期','地址','园区名称']  

#将列名插入表格,共7列

for i in range(len(columnName)):         

        sheet.write(0,i,columnName[i],style)

 

#通过循环取出每一行数据,写入excel    

for i in range(1,count_rows-1):

    data = cursor.fetchone()

    for j in range(0,count_cols-1):

        sheet.write(i,j,data[j],style)       

cursor.close()

database.close()

wbk.save('C:\Users\XUWU\Desktop\data01.xls')   

 

endtime=datetime.datetime.now()

print '结束时间:%s' % (endtime)

print '用时:%s 秒' % (endtime-starttime)


python之TXT数据导入数据库

为了导入数据,可以先对数据做些处理,让其更容易导入数据库

  

#!/usr/bin/python

#coding=utf-8

 

import _mysql,sys,time


#读入数据函数


def add_data(id,name,created_time):

    try:

        conn=_mysql.connect('127.0.0.1','root','')

        conn.query("set names utf8")

        conn.query("insert into mysql.test3(%s,%s,%s) values('%s','%s','%s')"%('object_id','object_name','created',id,name,created_time))

        result=conn.use_result()

        conn.close()

    except _mysql.Error,e:

        print ("error %d:%s" % (e.args[0],e.args[1]))

        sys.exit(1)

if __name__ =="__main__":

    f= open("/opt/testdata/aaa.txt","r")

     

    time1=time.time()

    print time.ctime()

    #读出第一行数据,作为数据表的段名

    line=f.readline()

    content=line.strip().split(",")

    conn0=_mysql.connect('127.0.0.1','root','')

    print 'connection is builded succesfully'

    conn0.query("drop table if exists mysql.test3")

    conn0.query("create table mysql.test3(%s varchar(90),%s varchar(90),%s varchar(90))"%(content[0][1:-1],content[1][1:-1],content[2][1:-1]))

    conn0.close()

    #运用next函数,让for循环从第二行开始读数据

    next(f)

    for line in f:

       #做一些处理,让每一段分开,放置在一个列表中

       content=line.strip().split(",")

       add_data(id=content[0][1:-1],name=content[1][1:-1],created_time=content[2][1:-1])

        

    f.close()

     

    time2=time.time()

    print time.ctime()

    #计算导入数据的时间

    print 'importing time is %f'%(time2-time1)










本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1901651,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
252 10
|
23天前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
2月前
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
327 15
|
2月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
3月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
86 3
|
9月前
|
存储 数据处理 索引
Python操作Excel常用方法汇总
Python操作Excel常用方法汇总
282 0
|
开发者 Python
Python 操作 Excel 全攻略 | 包括读取、写入、表格操作、图像输出和字体设置
Python 操作 Excel 全攻略 | 包括读取、写入、表格操作、图像输出和字体设置
1605 0