基于Python的mysql与excel互相转换

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 1.mysql转为excelgetConn函数获取mysql连接,第1个参数database为要连接的数据库。mysql2excel函数完成主要转换功能,第1个参数database为要连接的数据库,第2个参数为要转换的数据表,第3个参数为要保存的excel文件名。

1.mysql转为excel

getConn函数获取mysql连接,第1个参数database为要连接的数据库。
mysql2excel函数完成主要转换功能,第1个参数database为要连接的数据库,第2个参数为要转换的数据表,第3个参数为要保存的excel文件名。
在执行cursor.execute后,利用data_list = cursor.fetchall()获取数据库中所有数据,利用cursor.description获取函数中字段的相关信息,
字段的相关信息的数据类型为元组,其中第1个为字段名。
利用xlwt.Workbook()方法实例化对象赋值给excel变量,利用excel.add_sheet()方法获取新的表格,利用sheet.write()往excel文件中写入数据。

import pymysql
import xlwt

def getConn(database='pydb'):
    args = dict(
        host='localhost',
        user='root',
        passwd='...your passwd',
        db=database,
        charset='utf8'
    )
    conn = pymysql.connect(**args)
    return conn

def mysql2excel(database='pydb',table='test',excelResult = ''):
    conn = getConn(database)
    cursor = conn.cursor()
    cursor.execute("select * from {}".format(table))
    data_list = cursor.fetchall()
    excel = xlwt.Workbook()
    sheet = excel.add_sheet("sheet1")
    row_number = len(data_list)
    column_number = len(cursor.description)
    for i in range(column_number):
        sheet.write(0,i,cursor.description[i][0])
    for i in range(row_number):
        for j in range(column_number):
            sheet.write(i+1,j,data_list[i][j])
    excelName = "mysql_{}_{}.xls".format(database,table)
    if excelResult != '':
        excelName = excelResult
    excel.save(excelName)

if __name__ == "__main__":
    mysql2excel("customdb","deposit")

2.excel转为mysql

getConn函数获取mysql连接,第1个参数database为要连接的数据库。
excel2mysql函数完成主要转换功能,第1个参数为读取的excel文件名,第2个参数为存放数据的数据库,第3个参数为保存的表名。
利用xlrd.open_workbook()方法实例化对象赋值给excel,利用excel.sheet_by_index(0)获取第1张数据薄赋值给sheet,
利用sheet.nrows获取行数赋值给row_number,利用sheet.ncols获取列数赋值给column_number
利用sheet.row_values获取第一行的内容即字段赋值给field_list,利用循环+sheet.row_values()方法获取数据内容赋值给data_list
数据库操作分为:连接——>删除原有同名数据库——>创建数据库——>插入数据——>提交并关闭连接
drop_sql变量为删除原有同名数据库的sql语句,create_sql变量为创建数据库的sql语句,insert_sql变量为往数据表中插入数据的sql语句。
最后conn.commit()conn.close()

import xlrd
import pymysql

def getConn(database='pydb'):
    args = dict(
        host='localhost',
        user='root',
        passwd='...your passwd',
        db=database,
        charset='utf8'
    )
    conn = pymysql.connect(**args)
    return conn

def excel2mysql(excelName,database='pydb',table='test'):
    #下面代码作用:获取到excel中的字段和数据
    excel = xlrd.open_workbook(excelName)
    sheet = excel.sheet_by_index(0)
    row_number = sheet.nrows
    column_number = sheet.ncols
    field_list = sheet.row_values(0)
    data_list = []
    for i in range(1,row_number):
        data_list.append(sheet.row_values(i))
    #下面代码作用:根据字段创建表,根据数据执行插入语句
    conn = getConn(database)
    cursor = conn.cursor()
    drop_sql = "drop table if exists {}".format(table)
    cursor.execute(drop_sql)
    create_sql = "create table {}(".format(table)
    for field in field_list[:-1]:
        create_sql += "{} varchar(50),".format(field)
    create_sql += "{} varchar(50))".format(field_list[-1])
    cursor.execute(create_sql)
    for data in data_list:
        new_data = ["'{}'".format(i) for i in data]
        insert_sql = "insert into {} values({})".format(\
            table,','.join(new_data))
        cursor.execute(insert_sql)
    conn.commit()
    conn.close()

if __name__ == '__main__':
    excel2mysql("mysql_myschool_student.xls")
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
17天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
63 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
60 2
|
1月前
|
Python
Python 自动化操作 Excel - 02 - xlwt
Python 自动化操作 Excel - 02 - xlwt
40 14
|
1月前
|
Python
Python 自动化操作 Excel - 03 - xlutils
Python 自动化操作 Excel - 03 - xlutils
36 13
|
1月前
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
200 16
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
67 1
|
1月前
|
Python
Python 自动化操作 Excel - 01 - xlrd
Python 自动化操作 Excel - 01 - xlrd
36 9
|
1月前
|
IDE 开发工具 数据安全/隐私保护
Python编程--实现用户注册信息写入excel文件
Python编程--实现用户注册信息写入excel文件
|
1月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
64 0
下一篇
无影云桌面