通过pymysql读取数据库中表格并保存到excel(实用篇)

news/2024/6/24 7:48:28/文章来源:https://blog.csdn.net/ximu__l/article/details/137186804

本篇文章是通过pymysql将本地数据库中的指定表格保存到excel的操作。

这里我们假设本地已经安装了对应的数据库管理工具,里面有一个指定的表格,现在通过python程序,通过调用pymysql进行读取并保存到excel中。

在这里插入图片描述

关于数据库管理工具是Navicat Premium

我们所使用的数据库管理工具是Navicat Premium,它支持多种数据库系统,包括 MySQL, PostgreSQL, Oracle, SQLite, SQL Server, MariaDB 以及云数据库服务,例如 Amazon RDS, Amazon Aurora, Amazon Redshift, SQL Azure, Oracle Cloud 和 Google Cloud。Navicat Premium 提供了一个直观的用户界面使得数据库管理变得简单,即便是非专业人士也可以容易上手。

通过这款软件,用户可以进行各种数据库相关操作,如设置和维护数据库、进行数据迁移、备份和还原、建立和运行 SQL 查询、监控数据库的健康状况、优化数据库性能等。除了基本的数据编辑和浏览功能,Navicat Premium 还具备高级特性,比如数据传输、数据同步、结构同步、报告生成工具等。

读取数据库并保存

前期准备,自然我们是要在有一个类似于Navicat Premium 的数据库管理工具,并在里面建一个数据库,数据库中有一个名为 book_type的表。
该表中的内容如下:
在这里插入图片描述

现在我们通过pymysql来读取该表的信息。这里我们先用程序进行显示:

import openpyxl
import pymysql# 从数据库某个表中取出所有记录
# 参数host指定数据库服务器的IP地址,参数db_name指定数据库的名字,
# 参数table_name指定表的名字
# 参数user指定数据库的登录用户名,参数passwd指定登录用户的密码
def get_data(host, db_name, table_name, user, passwd):# 生成一个数据库的连接conn = pymysql.connect(host=host, port=3306, database=db_name, user=user, passwd=passwd)# 建立一个游标cur = conn.cursor()# 组合一个SQL查询语句sql = 'select * from ' + table_name# 执行SQL语句cur.execute(sql)# rows取得记录,cur.fetchall()返回所有符合条件的记录rows = cur.fetchall()# cur.description返回数据表的字段信息,# 返回值fields是一个元组,其中的每一项元素也是一个元组(子元组),# 这个子元组的第一个元素是字段名fields = cur.description# 关闭游标cur.close()# 断开连接conn.close()return fields, rows# 将表的记录导入到Excel中的函数
# 参数host指定数据库服务器的IP地址,参数db_name指定数据库的名字,
# 参数table_name指定表的名字,参数user指定数据库的登录用户名,
# 参数passwd指定登录用户的密码,参数filename指定导入的Excel文件名
def export_to_excel(fields, table_rows, filename):# 调用函数,取得数据表的字段信息和记录信息# 生成Excel文件的工作簿workbook = openpyxl.Workbook()# 在工作簿中生成一个工作表,表名设为"table_"加数据表名sheet = workbook.create_sheet('table_' + table_name, 0)# 在工作表第1行上写上字段名for i in range(0, len(fields)):# 在openpyxl模块中定义工作表的行始值是1,列起始值是1,# 所以cell()函数第1个参数是1表示第1行,第二参数为i+1是因为i从0开始计数,# fields[i][0]取得字段的名称sheet.cell(1, i + 1, fields[i][0])# 从工作表第2行开始写入每条记录的内容for row in range(0, len(table_rows)):for col in range(0, len(fields)):sheet.cell(row + 2, col + 1, '%s' % table_rows[row][col])# 保存到Excel文件中workbook.save(filename)# 主函数main
if __name__ == '__main__':# 初始化各变量值host = 'localhost'# 数据库服务器的IP地址db_name = 'book_manager' # 数据库的名字table_name = 'book_type' # 指定数据库中表的名字user = 'root' # 用户名password = '123456' # 密码# 调用函数,将数据表的内容导入到一个Excel文件中fields, table_rows = get_data(host, db_name, table_name, user, password)print("fields", fields)print("table_rows", table_rows)export_to_excel(fields, table_rows, './book_type.xlsx')

运行结果展示:

fields (('bookTypeId', 3, None, 11, 11, 0, False), ('bookTypeName', 253, None, 80, 80, 0, False), ('bookTypeDesc', 253, None, 1020, 1020, 0, False))
table_rows ((1, '计算机科学', '计算机相关'), (2, '历史', '历史相关'), (3, '文学', '文学相关'), (4, '科幻', '科幻相关'), (6, '小说', '小说相关'), (7, '外语', '外语相关'))

我们打开生成的book_type.xlsx文件,里面内容如下:
在这里插入图片描述
从结果上和之前指定数据库中的表里面的内容一样,可见成功。

需要注意的是,下面这些信息需要根据自己的数据库设置保持一致:
host = ‘localhost’# 数据库服务器的IP地址
db_name = ‘book_manager’ # 数据库的名字
table_name = ‘book_type’ # 指定数据库中表的名字
user = ‘root’ # 用户名
password = ‘123456’ # 密码

关于pymysql的基础操作及其代码展示在博主另外一篇博客:pymysql进行数据库各项基础操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1034967.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2013年认证杯SPSSPRO杯数学建模C题(第二阶段)公路运输业对于国内生产总值的影响分析全过程文档及程序

2013年认证杯SPSSPRO杯数学建模 C题 公路运输业对于国内生产总值的影响分析 原题再现: 交通运输作为国民经济的载体,沟通生产和消费,在经济发展中扮演着极其重要的角色。纵观几百年来交通运输与经济发展的相互关系,生产水平越高…

pytorch | torch.contiguous()方法

torch.contiguous()方法语义上是“连续的”,经常与torch.permute()、torch.transpose()、torch.view()方法一起使用,要理解这样使用的缘由,得从pytorch多维数组的低层存储开始说起: touch.view()方法对张量改变“形状”其实并没有…

【集合遍历详细讲解】Map、List、Set的遍历方式

这篇文章让你彻底理解集合的遍历方式,以及实现的方法 !!! 制作不易,觉得不错请点赞收藏哟 !!! 为什么要收藏呢,因为我觉得,编程这东西,如果没经常…

编译好的C++应用程序拷贝到其它电脑,提示dll未找到依赖项的解决方法。

编译好的C++应用程序拷贝到其它电脑上,运行时出现提示dll未找到依赖项。 由于dll依赖于其它dll,在开发用电脑上的环境不能完全与其它电脑相同。 解决办法是找到调用到的dll依赖的所有dll,拷贝到运行目录下。 在开发电脑上: 1、开始菜单--》所有应用--》Visual Studio 2…

QT网络调试助手

QT网络调试助手 1.开发流程 2.QTtcp服务器   1.1 服务端数据读取   1.2 服务端发送数据-所有客户端   1.3 服务端自动刷新ip地址   1.4 服务端检测客户端断开状态   1.5 服务端发送数据-指定特定客户端发送数据   1.6 服务端停止监听和断开 3.QTtcp客户端 1…

MinIO基础及面经

MinIO基础及面经 Minio是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟化镜像等,而一个对象文件可以是任意大小&a…

Thales SafeNet Sentinel HASP LDK本地提权漏洞(CVE-2024-0197)分析与复现

漏洞描述 Thales SafeNet Sentinel HASP LDK是一个软件保护和许可管理解决方案,用于帮助软件开发者保护其应用程序免受盗版和未经授权使用,由Thales SafeNet公司开发并提供支持。 该工具的msi安装程序在执行修复模式/fa时,存在DLL劫持漏洞。导…

【随笔】Git 高级篇 -- 分离 HEAD(十一)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

SpringBoot实现邮箱验证

目录 1、开启邮箱IMAP/SMTP服务,获取授权码 2、相关代码 1、使用配置Redis(用于存储验证码,具有时效性) 2、邮箱依赖和hutool(用于随机生成验证码) 3、配置Redis和邮箱信息 4、开启Redis服务 5、编写发送…

《QT实用小工具·四》屏幕拾色器

1、概述 源码放在文章末尾 该项目实现了屏幕拾色器的功能,可以根据鼠标指定的位置识别当前位置的颜色 项目功能包含: 鼠标按下实时采集鼠标处的颜色。 实时显示颜色值。 支持16进制格式和rgb格式。 实时显示预览颜色。 根据背景色自动计算合适的前景色…

1,static 关键字.Java

目录 1.概述 2.定义格式和使用 2.1 静态变量及其访问 2.2 实例变量及其访问 2.3 静态方法及其访问 2.4 实例方法及其访问 3.小结 1.概述 static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。被static修饰后的&#xff…

(八)Gateway服务网关

Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。…

openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint

文章目录 openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint254.1 功能描述254.2 语法格式254.3 参数说明254.4 示例 openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint 254.1 功能描述 指明子链接块的名称。…

设计模式20--迭代器模式

定义 案例一 案例二 优缺点

C++的静态绑定和动态绑定、虚函数表的理解

C的静态绑定和动态绑定、虚函数表的理解 概念 在C中,静态绑定(Static Binding)和动态绑定(Dynamic Binding)是两种不同的函数调用机制,主要涉及到如何根据对象的类型来选择执行哪个函数的决定过程。这两种…

电商技术揭秘五:电商平台的个性化营销与数据分析

文章目录 引言1. 个性化营销的概念与价值1.1 个性化营销的定义1.1.1 个性化营销的基本概念1.1.2 个性化营销在电商领域的重要性 1.2 个性化营销的核心价值1.2.1 提升用户体验1.2.2 增加转化率和客户忠诚度1.2.3 优化营销资源配置 2. 用户画像与行为分析2.1 用户画像的构建2.1.1…

本地项目上传到GitHub

本文档因使用实际项目提交做为案例,故使用xxx等字符进行脱敏,同时隐藏了部分输出,已实际项目和命令行输出为准 0、 Git 安装与GitHub注册 1) 在下述地址下载Git,安装一路默认下一步即可。安装完成后,随便…

道本科技智慧合规助力企业转型升级

在当今这个快速变化的商业世界里,企业合规管理已经从一项基本的监管要求转变为推动企业持续发展的关键动力。合规不仅是避免法律麻烦的盾牌,它还充当着引领企业向更高效、更可靠和更可持续方向发展的催化剂。而在实现这一目标的过程中,智慧合…

Linux中如何修改界面为中文, 设置中文输入法

目录 修改界面为中文方法一方法二方法三(kali中)方法四方法五(kali中) 切换为中文/英文输入法方法一方法二(kali中) 待续、更新中 修改界面为中文 方法一 查看当前系统拥有的中文语言包 locale -a | grep CN zh_CN.utf8 : 简体中文语言包 打开文件locale.conf vi /etc/lo…

完整部署一套k8s-v.1.28.0版本的集群

一、系统情况 虚拟机版本:esxi 6.7 系统版本:centos7.9_2009_x86 配置:4核8G(官网最低要求2核2G) 192.168.0.137 master节点 192.168.0.139 node2节点 192.168.0.138 node1节点(节点扩容练习&#xf…