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

news2024/11/24 8:55:02

本篇文章是通过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’ # 密码

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vCenter 提示 Root user password expired 解决办法

vCenter root 密码过期告警 vCenter 一般部署为一台虚拟机,该 root 用户是 vCenter 虚拟机SSH登录的用户,以及 vcenter VAMI的登录用户,该密码默认过期时间为90天。 vCenter涉及多个登录界面,本次提示root密码过期的用户涉及后两…

搜索与图论——Dijkstra算法求最短路

最短路算法 稠密图与稀疏图 n为点数,m为边数。m远小于n的平方为稀疏图,m接近n的平方为稠密图。 稀疏图用邻接表存,稠密图用邻接矩阵存 朴素版dijkstra时间复杂度为O(n^2),对于稠密图可以ac,但遇到稀疏图时会TLE。 dijkstra函数实…

【leetcode】力扣简单题两数之和

题目 思路 代码实现 #include<iostream> #include<unordered_map>using namespace std;class Solution { public:vector<int> TwoNumber(const vector<int>& nums, int target){vector<int> number_vector;unordered_map<int, int> …

java数组与集合框架(一) -- 数据结构,数组

数据结构 概述 为什么要讲数据结构&#xff1f; 任何一个有志于从事IT领域的人员来说&#xff0c;数据结构&#xff08;Data Structure&#xff09;是一门和计算机硬件与软件都密切相关的学科&#xff0c;它的研究重点是在计算机的程序设计领域中探讨如何在计算机中组织和存储…

FL Studio21.2.3中文版软件新功能介绍及下载安装步骤教程

FL Studio21.2中文版的适用人群非常广泛&#xff0c;主要包括以下几类&#xff1a; FL Studio 21 Win-安装包下载如下: https://wm.makeding.com/iclk/?zoneid55981 FL Studio 21 Mac-安装包下载如下: https://wm.makeding.com/iclk/?zoneid55982 音乐制作人&#xff1a…

软考101-上午题-【信息安全】-网络安全

一、网络安全 1-1、安全协议 SSL(Secure Socket Layer&#xff0c;安全套接层)是 Netscape 于 1994年开发的传输层安全协议&#xff0c;用于实现 Web 安全通信。1996 年发布的 SSL3.0 协议草案已经成为一个事实上的Web 安全标准。 端口号是43。 SSL HTTP HTTPS TLS(Transpo…

整合SpringSecurity+JWT实现登录认证

一、关于 SpringSecurity 在 Spring Boot 出现之前&#xff0c;SpringSecurity 的使用场景是被另外一个安全管理框架 Shiro 牢牢霸占的&#xff0c;因为相对于 SpringSecurity 来说&#xff0c;SSM 中整合 Shiro 更加轻量级。Spring Boot 出现后&#xff0c;使这一情况情况大有…

【论文通读】AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation

AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation 前言AbstractMotivationFrameworkConversable AgentsConversation Programming ApplicationA1: Math Problem SolvingA2: Retrieval-Augmented Code Generation and Question AnsweringA3: Decision…

Linux 给网卡配置ip

ip addr | grep eth9 ifconfig eth9 10.0.0.2 netmask 255.255.255.0 up

算法系列--动态规划--背包问题(4)--完全背包拓展题目

&#x1f495;"这种低水平质量的攻击根本就不值得我躲&#xff01;"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–动态规划–背包问题(4)–完全背包拓展题目 大家好,今天为大家带来的是算法系列--动态规划--背包问题(4)--完全背包拓展题目…

数字化时代多系统安全运维解决方案

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&…

VS2022+ObjectARX 2024环境搭建

1、安装好对应版本的VS2022和AutoCAD版本后&#xff0c;再下载两个文件。如下&#xff1a; 2、 先安装objectarx-for-autocad-2024-win-64bit-dlm.sfx.exe&#xff08;SDK&#xff09;&#xff0c;安装后如下&#xff1a; 3、安装ObjectARXWizard2024.msi&#xff0c;如下&…

AXI Memory Mapped to PCI Express 学习笔记(四)——仿真设计

本文包含有关Vivado Design Suite中对AXI Memory Mapped to PCI Express core进行仿真的示例设计信息。 一、仿真设计概述 在仿真设计中&#xff0c;事务是从Root Port模型发送到配置为Endpoint的AXI Memory Mapped to PCI Express core&#xff0c;并在AXI块RAM控制器设计中…

ubuntu+clangd+vscode 实现项目代码快速跳转(如: Linux 内核源码)

1. 准备工作 虚拟机 ubuntu 环境&#xff0c;笔者用的是 ubuntu20.04。windows 安装好 vscode 软件。 2. 配置过程 2.1 vscode远程连接 ubuntu ubuntu 虚拟机开启 ssh 服务 sudo apt install openssh-server sudo service ssh startvscode 安装 remote-ssh 插件 vscode 远…

前端三剑客 —— CSS (上)

上节内容中提到了 前端三剑客 —— HTML 超文本标记语言&#xff0c;这节内容 跟大家讲述三剑客中的第二个 CSS。 CSS 什么是CSS Cascading Style Sheel&#xff0c;简称CSS&#xff0c;中文叫层叠样式表&#xff0c;也叫级联样式表。主要作用是来修饰HTML页面的一种技术。 …

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑新能源发电商租赁共享储能的电力市场博弈分析》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

C# wpf 嵌入wpf控件

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件&#xff08;本章&#xff09; 第四章 底部嵌入HwndHost 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现&#xff1f;1、继承HwndHost2、添加Content属性3、创建wpf窗口并设置Conten…

node.js项目初始化操作

项目环境Vscode 1.新建一个文件夹node.js(xx.js) 2.右键点击node.js&#xff0c;点击打开终端 我在VScode打开终端 输入npm init初始化项目没反应。 解决方法&#xff1a;进入文件夹node.js&#xff0c;出入cmd跳转到终端 重新输入npm init命令 正确结果如下图 后续命令按下…

Python进阶编程 --- 1.类和对象

文章目录 第一章&#xff1a;1.初始对象1.1 使用对象组织数据1.2 类的成员方法1.2.1 类的定义和使用1.2.2 创建类对象1.2.3 成员变量和成员方法1.2.4 成员方法的定义语法1.2.5 注意事项 1.3 类和对象1.3.1 基于类创建对象 1.4 构造方法1.5 其他内置方法1.5.1 魔术方法str字符串…

http认证

1.Digest认证 各字段含义&#xff1a; Nonce 服务器直接返回的数据 H1MD5(user”:”realmpassword) H2MD5(method”:”url) method为请求类型、url不包括域名 Nc 指当前的第几次请求&#xff0c;使用8位16进制显示 Cnonce 8位随机字符串 ResponseMD5(H1”:”nonce”:”…