使用Python读Excel数据Insert到MySQL

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

#!/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,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
6月前
|
Python
如何根据Excel某列数据为依据分成一个新的工作表
在处理Excel数据时,我们常需要根据列值将数据分到不同的工作表或文件中。本文通过Python和VBA两种方法实现该操作:使用Python的`pandas`库按年级拆分为多个文件,再通过VBA宏按班级生成新的工作表,帮助高效整理复杂数据。
|
6月前
|
数据采集 数据可视化 数据挖掘
用 Excel+Power Query 做电商数据分析:从 “每天加班整理数据” 到 “一键生成报表” 的配置教程
在电商运营中,数据是增长的关键驱动力。然而,传统的手工数据处理方式效率低下,耗费大量时间且易出错。本文介绍如何利用 Excel 中的 Power Query 工具,自动化完成电商数据的采集、清洗与分析,大幅提升数据处理效率。通过某美妆电商的实战案例,详细拆解从多平台数据整合到可视化报表生成的全流程,帮助电商从业者摆脱繁琐操作,聚焦业务增长,实现数据驱动的高效运营。
|
3月前
|
人工智能 Java Linux
Python高效实现Excel转PDF:无Office依赖的轻量化方案
本文介绍无Office依赖的Python方案,利用Spire.XLS、python-office、Aspose.Cells等库实现Excel与PDF高效互转。支持跨平台部署、批量处理、格式精准控制,适用于服务器环境及自动化办公场景,提升转换效率与系统稳定性。
492 7
|
8月前
|
存储 安全 大数据
网安工程师必看!AiPy解决fscan扫描数据整理难题—多种信息快速分拣+Excel结构化存储方案
作为一名安全测试工程师,分析fscan扫描结果曾是繁琐的手动活:从海量日志中提取开放端口、漏洞信息和主机数据,耗时又易错。但现在,借助AiPy开发的GUI解析工具,只需喝杯奶茶的时间,即可将[PORT]、[SERVICE]、[VULN]、[HOST]等关键信息智能分类,并生成三份清晰的Excel报表。告别手动整理,大幅提升效率!在安全行业,工具党正碾压手动党。掌握AiPy,把时间留给真正的攻防实战!官网链接:https://www.aipyaipy.com,解锁更多用法!
|
3月前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
450 0
|
6月前
|
开发工具 Python
使用Python和OpenAPI将云上的安全组规则填写入Excel
本文介绍如何通过Python脚本自动化获取阿里云安全组及其规则信息,并将结果导出为Excel表格。相比CLI命令行方式,Python实现更高效、便捷,适用于需要批量处理和交付的场景。
使用Python和OpenAPI将云上的安全组规则填写入Excel
|
6月前
|
Python
将Excel特定某列数据删除
将Excel特定某列数据删除
|
8月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据分析,别再死磕Excel了!
Python数据分析,别再死磕Excel了!
347 2
|
11月前
|
分布式计算 Hadoop 大数据
从Excel到Hadoop:数据规模的进化之路
从Excel到Hadoop:数据规模的进化之路
251 10
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。

推荐镜像

更多