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

news2024/11/25 18:32:04

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 sqlstrs
    with 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_fill
                cell.value = sum_value

        #保存每个sheet
        workbook.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.coloradmin.cn/o/1846750.html

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

相关文章

视频智能分析平台智能边缘分析一体机安防监控平台打手机检测算法工作原理介绍

智能边缘分析一体机的打手机检测算法是一种集成了计算机视觉和人工智能技术的先进算法&#xff0c;专门用于实时监测和识别监控画面中的打手机行为。以下是关于该算法的详细介绍&#xff1a; 工作原理 1、视频流获取&#xff1a; 智能边缘分析一体机首先通过连接的视频监控设…

DS:堆的应用——两种算法和TOP-K问题

欢迎来到Harper.Lee的学习世界&#xff01;博主主页传送门&#xff1a;Harper.Lee的博客主页想要一起进步的uu可以来后台找我哦&#xff01; 一、堆的排序 1.1 向上调整——建小堆 1.1.1 代码实现 //时间复杂度&#xff1a;O(N*logN) //空间复杂度&#xff1a;O(logN) for (…

Android系统 抓trace方法(手机及车机)

1、先说说什么是trace trace是一种以perfetto.trace结尾的文件。一般用来分析卡顿、启动时间慢等问题&#xff0c;还可以用来分析方法耗时&#xff0c;android系统的性能、功耗等等问题。所需要使用到的网站是&#xff1a; Perfetto UI 他的前身是Systrace&#xff0c;不过Pe…

Hadoop3:MapReduce中Reduce阶段自定义OutputFormat逻辑

一、情景描述 我们知道&#xff0c;在MapTask阶段开始时&#xff0c;需要InputFormat来读取数据 而在ReduceTask阶段结束时&#xff0c;将处理完成的数据&#xff0c;输出到磁盘&#xff0c;此时就要用到OutputFormat 在之前的程序中&#xff0c;我们都没有设置过这部分配置 …

高速公路声光预警定向广播助力安全出行

近年来&#xff0c;高速重大交通事故屡见不鲜&#xff0c;安全管控一直是高速运营的重中之重。如何利用现代化技术和信息化手段&#xff0c;创新、智能、高效的压降交通事故的发生概率&#xff0c;优化交通安全管控质量&#xff0c;是近年来交管部门的主要工作&#xff0c;也是…

在智星云租用算力时,如何选择适合的GPU?

智星云平台分配GPU、CPU、内存的机制为&#xff1a;按租用的GPU数量成比例分配CPU和内存&#xff0c;算力市场显示的CPU和内存均为每GPU分配的CPU和内存&#xff0c;如果租用两块GPU&#xff0c;那么CPU和内存就x2。此外GPU非共享&#xff0c;每个实例对GPU是独占的。 一. CPU…

A800显卡驱动安装(使用deb安装)

重新安装显卡驱动&#xff0c;查阅了资料将过程记录如下&#xff1a; 1.下载deb安装包 打开nvidia官网查找对应的驱动版本&#xff0c;A800所在的选项卡位置如图&#xff1a; 点击查找后下载得到的是nvidia-driver-local-repo-ubuntu2004-550.90.07_1.0-1_amd64.deb安装包 2.…

JMeter的基本概念

一、主流测试工具 1&#xff0c;Loadrunner HP Loadrunner是一种工业级标准性能测试负载工具&#xff0c;可以模拟上万用户实施测试&#xff0c;并在测试时可实时检测应用服务器及服务器硬件各种数据&#xff0c;来确认和查找存在的瓶颈 支持多协议:Web(HTTP/HTML)、Windows…

文件上传漏洞-上篇

一、概述 文件上传漏洞可以说是日常渗透测试中用得最多的一个漏洞&#xff0c;用它获得服务器权限最快最直接。在web程序中&#xff0c;经常需要用到文件上传的功能。如用户或者管理员上传图片&#xff0c;或者其它文件。如果没有限制上传类型或者限制不严格被绕过&#xff0c…

网络安全之Windows提权(上篇)(高级进阶)

目录 一&#xff0c;什么是提权&#xff1f; 二&#xff0c;提权的前提 三&#xff0c;如何提权&#xff1f; 1&#xff0c;第一步连接服务器 2&#xff0c;提升权限至iuser​编辑 3&#xff0c;利用补丁漏洞提权至最高级 四&#xff0c;总结 一&#xff0c;什么是提权&am…

php上传zip压缩包到服务器并解压,解析压缩包内excel表格数据导入到数据库

需求: 1.需要管理后台将excel表格中的每条单词数据导入到数据库中. 2.每条单词数据对应的图片和音频文件需要上传到服务器中. 为了让客户上传数据方便,考虑了一下决定通过后台上传压缩包的方式实现 测试压缩包: 压缩包的目录结构 管理后台导入教材 public function upload…

用了这么久的群晖NAS,它到底能干些什么?

从21年开始玩群晖也有几年了&#xff0c;除非面临断电或升级&#xff0c;这个小伙伴都任劳任怨的工作着 现在NAS也广泛应用于家庭和企业环境中了&#xff0c;今天盘点一下我用群晖NAS都干了些什么~ 1.文件存储与共享&#xff1a; 群晖NAS可以作为文件服务器&#xff0c;提供…

stable diffusion 模型和lora融合

炜哥的AI学习笔记——SuperMerger插件学习 - 哔哩哔哩接下来学习的插件名字叫做 SuperMerger,它的作用正如其名,可以融合大模型或者 LoRA,一般来说会结合之前的插件 LoRA Block Weight 使用,在调整完成 LoRA 模型的权重后使用改插件进行重新打包。除了 LoRA ,Checkpoint 也…

Redis-数据类型-Geospatial(地理空间索引)

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到db5数据库4、将地理位置信息&#xff08;经度和纬度&#xff09;添加到 Redis 的键&#xff08;key&#xff09;中4.1、添加大江商厦4.2、添加西部硅谷 5、升序返回有序集key&#xff0c;让分数一起和值返回的结果…

Java宝藏实验资源库(3)类

一、实验目的 理解面向对象程序的基本概念。掌握类的继承的实现机制。熟悉类中成员的访问控制方法。熟悉ArrayList类的使用。 二、实验内容、过程及结果 *9.5Programming Exerc ise the GregorianCal endar class) Java API has the GregorianCalendar class in the java. uti…

Windows11 24H2网络功能全新升级:全面支持Wi-Fi 7!

Windows11 24H2版本不仅推出了很多新功能&#xff0c;也全面升级了网络功能&#xff0c;全面支持Wi-Fi 7&#xff0c;带给用户最快的网速体验&#xff0c;还支持用户通过二维码分享Wi-Fi密码&#xff0c;操作更加便捷&#xff0c;也更新了SMB、LAPS和NDR协议。接下来跟随小编去…

《C++ Primer》导学系列:第 7 章 - 类

7.1 定义抽象数据类型 7.1.1 类的基本概念 在C中&#xff0c;类是用户定义的类型&#xff0c;提供了一种将数据和操作这些数据的函数&#xff08;成员函数&#xff09;组合在一起的方法。类定义了对象的属性和行为&#xff0c;通过实例化类来创建对象。 7.1.2 定义类 定义类…

ru俄罗斯域名如何申请SSL证书?

我们日常看到的都是com这种国际域名比较普遍&#xff0c;尤其是主流网站&#xff0c;主要原因考虑的其通用性&#xff0c;那么对于地方性的域名大家很少看到&#xff0c;比如俄罗斯国家域名.ru大家还是有些陌生的&#xff0c;但要说中国.CN域名那你就很熟悉了。 有用户在申请过…

Anthropic AI模型Claude 3.5 Sonnet在Amazon Bedrock上正式可用

Claude 3.5 Sonnet是Anthropic最先进的Claude系列AI模型的新成员&#xff0c;比Claude 3 Opus更智能且价格只有其五分之一 北京——2024年6月21日 亚马逊云科技宣布&#xff0c;Anthropic最新、最强大的模型Claude 3.5 Sonnet现已在Amazon Bedrock上正式可用&#xff0c;该模型…

Syslog日志外发

Syslog是一种广泛应用于网络设备、操作系统和应用程序的日志通信协议&#xff0c;通过收集、监控和分析Syslog日志&#xff0c;企业可以有效维护网络安全、故障排除和运营管理。 除了内部监控&#xff0c;有时企业也需要将Syslog日志外发以实现更多的管理和合规需求。在实现Sy…