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

相关文章

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

Mac excel 同时冻结首行和首列

1. 选择B2窗格 2. 选择视图 3. 选择冻结窗格 最后首行和首列的分割线加粗了就表示成功了

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

给数据库的表添加字段

周五有一个需求是这样的: 原来数据库有一个表B,现在需要添加一个字段C,我把代码中增删改查部分进行了修改, 比如insert中也添入了字段C。 但没有考虑到一个问题,数据库的兼容性。因为之前的版本已经投入使用了,再升级的话,需要进行兼容处理,当时脑子都蒙了,转不过来,后来同事解决了这个问题。 现在想想,思路就是,把数据库的表结构存入文件中,如xxx.sql 实时更新该文件: CREAT

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

记录AS混淆代码模板

开启混淆得先在build.gradle文件中把 minifyEnabled false改成true,以及shrinkResources true//去除无用的resource文件 这些是写在proguard-rules.pro文件内的 指定代码的压缩级别 -optimizationpasses 5 包明不混合大小写 -dontusemixedcaseclassnames 不去忽略非公共