Python3,10行代码,从数据库获取各个维度的数据统计,并把结果输出在Excel中。

10行代码自动统计数据

  • 1、引言
  • 2、代码实例
  • 3、总结

1、引言

小屌丝:鱼哥帮个忙
小鱼:稍等会哦,
小屌丝:好嘞。
在这里插入图片描述
小屌丝: 鱼哥, 还没忙完嘛?
小鱼:快了快了, 再耐心等一等
小屌丝:哦…
在这里插入图片描述
小屌丝:鱼哥,能不能行了, 给个痛快话
小鱼:你看我是不是男的
小屌丝:这还用问,必须得
小鱼:那你还问能不能行?
小屌丝:你这时间,还挺久的啊。
小鱼:哎哎哎, 你这是要飙车啊
小屌丝:…
小鱼:有啥事情?
小屌丝:嗯… 就是… 嗯…
小鱼:你这还磨磨唧唧的?赶紧说
小屌丝:就是, 想着统计数据库的各维度数据,并把结果写入到Excel中
小鱼:就这个??
小屌丝:嗯,是的
小鱼:我还以为啥事的? 你等会吧
小屌丝:唉… 鱼哥,别等了, 我这等的花儿都谢了。
小鱼:你斗地主呢?
小屌丝:没有了,就是… 我寻思 这快到夜宵时间了, 咱是不是得赶紧的。
小鱼:哎呀,说的也是, 那这就开整。

2、代码实例

由于代码没有什么特别的难度, 这里,我就直接上代码了。
也会在代码中做详细的注释。

# -*- coding:utf-8 -*-
# @Time   : 2024-06-01
# @Author : Carl_DJ'''
实现功能:1、读取sql.txt 文件,把查询统计结果写在Excel中文件,2、把Excel中每个sheet页中的每列数据进行统计求和,写在第四列中3、最后把第四列中有数据的值背景色填充为黄色'''import os
import pymysql
import pandas as pd
from datetime import datetime
from openpyxl import load_workbook
from openpyxl.styles import PatternFill#配置数据库
db_config = {'host': '数据库服务器地址','port': '输入端口号','user': '输入用户名','password': '输入密码','db': '输入库信息','charset': 'utf8'}#数据库链接口
conn = pymysql.connect(**db_config)
#版本信息
Ver_name = 'Ver 1.1'#获取当前时间并格式化now = datetime.now().strftime('%Y%m%d%H%M')
Outfile_name  = Ver_name+'_统计结果_'+now+'.xlsx'
result_path = './002_统计结果'
Outfile_path = os.path.join(result_path,Outfile_name)#读取sql文件=
sql_name = r'test_sql.txt'#把查询结果写入不同的sheet页,也需要对sheet页进行命名
sheet_names = ['完整度','颜色','大类','小类']#读取sql文件并分割sql语句
def sqls(sql_name):global sqlstrswith open(sql_name,'r',encoding='utf-8') as f:sqlstrs = f.read().split(';')# 执行sql并写入Excel
def quert_and_write_to_excel():with pd.ExcelWriter(Outfile_path) as writer:for i in range (len(sqlstrs)):df = pd.read_sql(sqlstrs[i],con=conn)df.to_excel(writer,sheet_name=sheet_names[i],index=False,header = True)#加载Excel文件并计算B列及以后每列的和
def calculate_sum_and_save():workbook = load_workbook(Outfile_path)#添加黄色背景色yellow_fill = PatternFill( start_color='FFFF00', end_color='FFFF00', fill_type='solid')# 遍历工作簿中的每个工作表for sheet_name in workbook.sheetnames:sheet = workbook[sheet_name]# 初始化一个列表用于存储每列的求和结果,列表长度是工作表最大列数减1(因为不计算第一列)column_sums = [0]*(sheet.max_column - 1)# 在A4列添加"统计"文字并设置黄色背景色cell_a4 = sheet['A4']cell_a4.value = 'Total'cell_a4.fill = yellow_fill# 遍历所有行,从B列开始累加数字(只获取单元格的值)for row in sheet.iter_rows(min_col=2, values_only=True):# 遍历每一行的单元格(从第二列开始),并计算它们的和for col_idx, cell_value in enumerate(row, start=2):  # 从第二列开始,col_idx从2开始# 如果单元格的值不为空,且是数值类型(整数或浮点数)if cell_value is not None and isinstance(cell_value, (int, float)):# 将该值加到对应列的求和列表中column_sums[col_idx - 2] += cell_value  # 减去2,从B列开始# 将从B列开始的每列的总和写入到对应列的第四行中for col_idx, sum_value in enumerate(column_sums):# 设置第四列的单元格背景色为黄色if col_idx + 2 <= sheet.max_column:# 获取第四行对应列的单元格对象cell = sheet.cell(row=4, column=col_idx + 2)cell.fill = yellow_fillcell.value = sum_value#保存每个sheetworkbook.save(Outfile_path)print(f'数据求和完成,并已保持到:{Outfile_path}')#执行
if __name__ == '__main__':sqls(sql_name)quert_and_write_to_excel()calculate_sum_and_save()print ('数据保存完成')#关闭数据库链接
conn.close()
print ('数据库链接已关闭')

注意

  • 1、由于sql比较多,且便于整个代码的维护,所以,这里我把sql放在文件中,
    在这里插入图片描述
  • 2、生成的Excel文件,展示如下:

在这里插入图片描述

3、总结

这个方法,在平时工作中很常用。
不管是做数据统计,还是做业务统计,测试开发等岗位,都会用到。
所以,平时多积累,总会用得到。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)评测一等奖获得者

关注小鱼,带你学习更多更专业更前言的Python领域技术知识

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

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

相关文章

【JVM】详解Java 堆内存分区

Java 堆内存&#xff08;Heap Memory&#xff09;是 Java 虚拟机&#xff08;JVM&#xff09;中用于存储对象实例的区域。为了更有效地管理和回收内存&#xff0c;Java 堆通常被划分为不同的区域&#xff0c;每个区域有特定的用途和特点。以下是 Java 堆内存分区的定义、作用以…

P2433【深基1-2】小学数学 N 合一

1. 题目链接 https://www.luogu.com.cn/problem/P3954 【深基1-2】小学数学 N 合一 2. 题目描述 问题1&#xff1a;输出I love Luogu! 问题2&#xff1a;10个苹果&#xff0c;A拿走2个&#xff0c;U拿走4个&#xff0c;B拿走剩下的&#xff0c;求A和U一共拿走几个&#xff0c…

Springboot拓展之整合邮件 JavaMail的使用与实操

邮件 电子邮件仍然是我们企业间交往的一种非常常见的方式 发送简单邮件 第一步首先导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.13</version&…

win11家庭版使用自带的Linux子系统并安装docker【全网整合版】

1. 电脑配置项 开发者选项 设置->系统->开发者选项 启用或关闭windows功能 控制面板->卸载程序->启用或关闭windows功能 勾选适用于Linux的Windows子系统和虚拟机平台并重启电脑(首次勾选选项时电脑提示重启) Hyper-V 关键点&#xff1a;win11家庭版在启动…

不知道怎么下载原版系统,这几个原版系统下载网站可以帮你

电脑是我们日常办公生活中必备不可少的设备&#xff0c;无论是个人使用还是企业部署&#xff0c;拥有一个稳定、安全且纯净的操作系统对于保障数据安全和提升使用体验至关重要。然而&#xff0c;网络上充斥着各种二次打包的系统版本&#xff0c;这些版本往往携带了第三方软件或…

C++ 矩阵的最小路径和解法

描述 给定一个 n * m 的矩阵 a&#xff0c;从左上角开始每次只能向右或者向下走&#xff0c;最后到达右下角的位置&#xff0c;路径上所有的数字累加起来就是路径和&#xff0c;输出所有的路径中最小的路径和。 数据范围: 1≤&#x1d45b;,&#x1d45a;≤5001≤n,m≤500&…

【总线】AXI4第四课时:信号描述

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣&#xff0c;那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者&#xff0c;AXI4以其高性能和高度可扩展性&#xff0c;成为了现代电子系统中不可或缺的通信桥梁…

Cancer Discovery | 非小细胞肺癌的空间蛋白组学研究再添新篇章

非小细胞肺癌&#xff08;NSCLC&#xff09;作为最常见的肺癌亚型&#xff0c;其治疗和预后的改善一直是医学研究的重点。由肿瘤细胞、免疫细胞、成纤维细胞等多种细胞类型组成的肿瘤微环境&#xff08;TME&#xff09;已被证实在肺癌的进展、转移和治疗响应中扮演着重要的角色…

如何开发一套基于C#和.NET 6.0手术麻醉系统? 手术麻醉系统源码

如何开发一套基于C#和.NET 6.0手术麻醉系统&#xff1f; 手术麻醉系统源码 基于C#和.NET 6.0开发的手术麻醉系统是一个涉及多个层面的复杂项目。 以下是一个概述性的步骤&#xff0c;帮助你开始这个项目&#xff1a; 一、项目规划和需求分析 1、确定项目目标&#xff1a;明确…

如何使用 ArcGIS Pro 和 Landsat 8 影像计算叶绿素指数和全球环境监测指数

GIS 工具和技术的出现极大地帮助了识别、量化和解决问题。GIS 还通过研究可能的情况并实施预防方案提供了一种主动的解决方案。多年来&#xff0c;GIS 通过电信和网络服务、事故/事件分析、城市规划、交通规划、环境影响评估、洪水损失估计、自然资源管理、环境健康和安全、植被…

TikTok API接口——获取TikTok用户QRcode二维码

一、引言 在数字化时代&#xff0c;QRcode二维码已经成为连接线上线下的重要桥梁。在社交媒体领域&#xff0c;TikTok作为短视频领域的佼佼者&#xff0c;用户量庞大且活跃度高。为了满足用户之间更便捷的互动需求&#xff0c;我们特别开发了一款针对TikTok平台的接口&#xf…

2024年华为OD机试真题-反射计数-C++-OD统一考试(C卷D卷)

2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述: 给定一个包含 0 和 1 的二维矩阵 给定一个初始位置和速度 一个物体从给定的初始位置触发, 在给定的速度下进行移动, 遇到矩阵的边缘则发生镜面反射 无论物体经过 0 还是 1,…

浅谈请求中数据转换

目录 1. 前端 JS 数据类型2. JSON 数据类型&#xff08;数据传输格式&#xff09;3. 后端 Java 数据类型4. 后端序列化框架 Fastjson && Jackson 转换4.1. JSON 转换 Java4.2. Java 转换 JSON 1. 前端 JS 数据类型 数据类型示例Stringvar str 张三Number (数字)var a…

C++ 多线程举例

C++ 多线程 在C++中,多线程编程是一种常见的并发编程方式,可以使用标准库中的库实现多线程。通过这些示例,我们展示了如何在C++中使用多线程,包括创建和启动线程、传递参数、线程间同步以及条件变量的使用。多线程编程在提高程序并发性能方面非常有用,但需要注意同步和数…

django网站前端开发-上传文件

django在做网站前端开发时&#xff0c;在网页上嵌入一个上传pdf文档的按钮&#xff0c;点击该按钮&#xff0c;弹出选择文件 在 Django 项目中&#xff0c;前端嵌入上传 PDF 文档的按钮并处理文件上传的基本步骤如下&#xff1a; 创建 Django 应用和模型&#xff1a; 1.1. 创建…

聊聊最近比较火的AI产品做互联网算法备案

今年AI&#x1f525;了&#xff0c;而且是大火&#xff0c;导致监管部门相继出台相关政策&#xff0c;需要管控下&#xff0c;所以互联网算法备案就自然而然重新被提出来。其实这个互联网算法备案去年就已经开始实施了&#xff0c;去年只有几个大厂比如BAT等互联网巨头等会去弄…

【系统设计】如何权衡范式与反范式设计

一、什么是范式设计与反范式设计 1.1、范式设计&#xff08;Normalization&#xff09; 定义&#xff1a; 范式设计是数据库设计中最基础的设计原则之一&#xff0c;它主要通过规范化数据模型&#xff0c;减少数据冗余和数据不一致的问题。 常用的范式&#xff1a; 第一范式…

xv6 qemu 卡在Booting from Hard Disk...

定位到xv6目录下的kernel.ld的第25行 .stab:{ 修改成 .stab : AT(LOADADDR(.rodata) SIZEOF(.rodata)){

Netty中的各个关键时间点(一)

前置说明 本文主要记录Netty中的一些主要的关键时间点&#xff0c;是理解Netty 和 事件驱动的关键。也是阅读Netty源码的指导。 代码来源&#xff1a;Netty 4.1.77 本文涉及到的角色&#xff1a; 角色&#xff1a;主线程&#xff0c;主Reactor线程&#xff08;bossGroup中的…

Linux连接工具MobaXterm详细使用教程

目录 一、MobaXterm的下载 1、访问官网 2、下载便携版 3、启动MobaXterm 二、MobaXterm基本使用设置 1、新建会话 2、使用ssh连接第一个会话 3、设置主密码 4、主界面 5、sftp文件上传下载 6、文件拖拽的上传下载 7.右键粘贴 8、查看服务器监测信息​编辑 9、个…