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

2024-06-21 13:52

本文主要是介绍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领域技术知识

这篇关于Python3,10行代码,从数据库获取各个维度的数据统计,并把结果输出在Excel中。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081396

相关文章

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param