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,一经查实,立即删除!

相关文章

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…

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

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

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

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

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

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

进军韩国5G市场!移远通信5G模组RG500L-EU率先获得KT、LGU+认证

近日&#xff0c;移远通信工规级5G模组RG500L-EU再传喜讯&#xff0c;率先通过了韩国两大运营商KT和LGU的严格认证。​在此之前&#xff0c;该模组已顺利通过KC认证&#xff08;韩国法规认证&#xff09;&#xff0c;此次再获运营商认证表明&#xff0c;RG500L-EU已完全满足韩国…

LeetCode LCP 61. 气温变化趋势

别怕麻烦&#xff0c;模拟题有时候就是要多写一些条件&#xff08;或者你思维很活跃找出规律&#xff09;&#xff0c;代码如下&#xff1a; class Solution { public:int temperatureTrend(vector<int>& temperatureA, vector<int>& temperatureB) {int …

斗地主游戏

找了个斗地主的项目&#xff0c;github项目地址&#xff1a;https://github.com/zhuang0/BoYaDDZ/tree/master/BoyaDDZ。在此基础上做些修改和优化&#xff0c;为了方便国内访问&#xff0c;上传到gitee上。 gitee地址: https://gitee.com/zhagnjinaaaa/android-ddz v0.0.1解决…

Linux基础篇

Linux 本文章是在B站的尚课听的&#xff0c;但是由于版本较老&#xff0c;而且是以centOS学习Linux&#xff0c;由于CentOS在10天后就不再更新&#xff0c;被抛弃了&#xff0c;痛定思痛&#xff0c;及时停课。但是又不想浪费笔记&#xff0c;前来保存一下。 文章目录 Linux前…

Jacob代码编写/部署的注意事项集

注意事项一&#xff1a; 慎用 ComThread.InitSTA(); ComThread.Release(); 因为经常会在 ComThread.Release(); 发生阻塞&#xff0c;导致程序一直卡在这里&#xff0c;不能被调用&#xff1b; 建议不要使用这个初始化和释放线程的代码&#xff0c;看似很高级&#xff0c;其…

Swift Combine — zip和combineLatest的理解与使用

Publisher 上还有一些其他的操作&#xff0c;比如 zip 和 combineLatest&#xff0c;能让我们在时序上对控制多个 Publisher 的结果进行类似 and 和 or 的合并&#xff0c;它们在构建复杂 Publisher 逻辑时也十分有用。 zip Publisher 中的 zip 和 Sequence 的 zip 相类似&am…

iOS政策解读之一丨App提交审核前注意事项必知

大家好&#xff0c;我是小编阿文。欢迎您关注我们&#xff0c;经常分享有关Android出海&#xff0c;iOS出海&#xff0c;App市场政策实时更新&#xff0c;互金市场投放策略&#xff0c;最新互金新闻资讯等文章&#xff0c;期待与您共航世界之海。 iOS企业出海所面临的主要挑战…

高速异地组网怎么办理?

在当今信息化时代&#xff0c;跨地域的远程办公、远程教育、远程医疗等需求越来越多。而高速异地组网作为一种解决不同地区之间快速组建局域网的方法&#xff0c;被广泛应用。本文将介绍一款异地组网内网穿透产品——【天联】&#xff0c;并提供其办理流程。 【天联】组网是什…