mysql 数据转excel文件

news2024/10/7 20:30:01

mysql 数据转excel文件

缘由

为售后拉取数据,用navicat太墨迹了,用python写一个main方法跑一下;
1.抽取共同方法,封装成传入mysql,直接下载成excel;
2.写入所有sql语句,传入参数;



代码

'''
@Author: Jeff.zheng
@Date : 2024/4/27
@Desc : mysql 转成excel文件
'''

import json
import os
import time
from datetime import datetime
import pandas as pd
import pymysql.cursors
from future.backports.datetime import timedelta


# 获取游标
def getCursor():
    # 创建连接
    Connection = pymysql.connect(
        host='127.0.0.1',  # 数据库主机地址
        user='root',  # 数据库用户名
        password='123456',  # 数据库密码
        db='cloud3',  # 数据库名
        cursorclass=pymysql.cursors.DictCursor  # 使用DictCursor以字典形式返回查询结果
    )

    cursorOfConnection = Connection.cursor()
    return cursorOfConnection


# 获取结果
def getResultBySql(cursorOfConnection, sql):
    try:
        cursorOfConnection.execute(sql)
        # 获取查询结果
        Result = cursorOfConnection.fetchall()
        return Result
    except Exception as e:
        print(e)
        cursorOfConnection.close()


def exportExcelByList(listData, dateName, fileName):
    df = pd.DataFrame(listData)
    # 设置表头
    need_path = os.path.join(os.path.expanduser("~"), "Desktop") + '/测试文件夹-' + dateName
    os.makedirs(need_path, exist_ok=True)
    fileNamePath = os.path.join(need_path, fileName + '.xlsx')
    df.to_excel(fileNamePath, index=None)
    # 这里可以格式化或者别的,太麻烦暂不处理;


def sqlToExcel(myCursor, sql, dateName, xlsxName):
    print(xlsxName + "-开始-" + datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    sqlResultList = getResultBySql(myCursor, sql)
    exportExcelByList(sqlResultList, dateName, xlsxName)
    print(xlsxName + "-结束-" + datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "\n")


if __name__ == '__main__':
    cursor = getCursor()
    date = "2024-04-28"
    dateAddOne = (datetime.strptime(date, '%Y-%m-%d') + timedelta(days=1)).strftime('%Y-%m-%d')

    sql0 = "SELECT col_device_id  as '所有出货的设备ID'  FROM cj_all_bed "
    sqlToExcel(cursor, sql0, date, "0-所有出货的设备ID")

在这里插入图片描述




多表最后效果图

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

2024-05-02 商业分析-杭州小万科技-商业模式分析

摘要: 对杭州小万科技的商业模式进行分析,以对其做出客观的评估。 杭州小万科技的资料: 杭州小万科技有限公司 - 企知道 (qizhidao.com) 杭州小万科技有限公司网站备案查询 - 天眼查 (tianyancha.com) 杭州小万科技有限公司 - 爱企查 (baidu.com) ​ 2023年年报:

Android手写自己的路由SDK

实现自己的路由框架 ​ 在较大型的Android app中常会用到组件化技术,针对不同的业务/基础功能对模块进行划分,从上到下为壳工程、业务模块、基础模块。其中业务模块依赖基础模块,壳工程依赖业务模块。同级的横向模块(比如多个业务…

BeanFactory 源码浅析

BeanFactory 功能介绍 BeanFactory 是核心容器,负责管理 Bean 对象 BeanFactory 接口的功能只有一个 getBean() 方法BeanFactory 的实现类(DefaultListableBeanFactory)包含:控制反转、基本的依赖注入、Bean 生命周期的各种功能…

【Python】函数设计

1.联系函数的设计 2.找质数 3.找因子 4.判断水仙花数 5.斐波拉契数列递归调用,并用数组存储已计算过的数,减少重复计算 1、计算利息和本息 编写两个函数分别按单利和复利计算利息,根据本金、年利率、存款年限得到本息和和利息。调用这两个函数计算1…

【算法刷题日志】吸氧羊的StarryCoding之旅 - 贡献法计算

题目链接:https://www.starrycoding.com/problem/3 题目描述 吸氧羊终于注册了一个StarryCoding账号!(她很开心) 但是吸氧羊忘记了它的密码,她想起你是计算机大师,于是就来请教你。 她虽然不记得密码了…

java版数据结构:深入理解栈和队列:数据结构与应用(vector,stack,queue)

目录 前言 动态数组类(vector) 特点: 应用: 栈(Stack) 栈的基础概念: 栈的常用方法: 模拟栈操作: 队列(Queue) 队列的基础概念 队列的常…

golang学习笔记(协程的基础知识)

golang的协程 协程是一种轻量级的线程,它可以实现并发执行的并行操作。协程是Go语言中的一个核心特性,它使得程序能够以并发的方式运行,并且非常高效。与传统的线程相比,协程的创建和销毁成本非常低,可以方便地启动大…

三维坐标点按剖面分类

一、写在前面 ①配套文件:根据剖面对三维坐标点(X,Y,Z)分类资源-CSDN文库 ②脱敏处理:蚀变数据已采用随机数生成覆盖 ③剖面坐标按顺序排列在“剖面坐标点.xlsx”文件中 二、3点确定空间中平面方程 原理: 设3点A&…

C++深度解析教程笔记2

C深度解析教程笔记2 第3课 - 进化后的 const 分析实验-C与C的const区别实验-C与C的const区别&const作用域 第4课 - 布尔类型和引用小结 本文学习自狄泰软件学院 唐佐林老师的 C深度解析教程,图片全部来源于课程PPT,仅用于个人学习记录 第3课 - 进化后…

列转行(spark 与presto语法)

一、Presto 语法 原始数据: 期望数据: 代码: SELECT info, value FROM ( select 张三 as name,18 as age,男 as gender,清华 as schoolunion allselect 李四 as name,18 as age,男 as gender,清华 as school ) as a CROSS JOIN UNNEST(…

Unreal 编辑器工具 批量重命名资源

右键 - Editor Utilities - Editor Utility Blueprint,基类选择 Asset Action Utility 在类默认值内,可以添加筛选器,筛选指定的类型 然后新建一个函数,加上4个输入:ReplaceFrom,ReplaceTo,Add…

使用Android Studio 搭建AOSP FrameWork 源码阅读开发环境

文章目录 概述安装Android Studio编译源码使用Android Studio打开源码制作ipr文件直接编译成功后自动打开Android Studio 修改SystemUI验证开发环境 概述 我们都知道Android的系统源码量非常之大,大致有frameworka层源码,硬件层(HAL)源码,内…

机器学习笔记-18

异常检测问题 异常检测虽然主要用于无监督学习问题上,但是和监督学习问题很相似。 异常检测(Anomaly Detection):给定正确样本集{ x ( 1 ) , x ( 2 ) . . . x ( n ) x^{(1)},x^{(2)}...x^{(n)} x(1),x(2)...x(n)},记新样本即要检测的样本为…

堆排序以及TOP-K问题

片头 嗨!小伙伴们,大家好!今天我们来深入理解堆这种数据结构,分析一下堆排序以及TOP-K问题,准备好了吗?我要开始咯! 一、堆排序 这里我们先假设要排成升序,也就是从左到右&#xf…

JSP简介——[JSP]1

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

基于php+mysql+html图书管理系统(含实训报告)

博主介绍: 大家好,本人精通Java、Python、Php、C#、C、C编程语言,同时也熟练掌握微信小程序、Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

【C++】命名冲突了怎么办?命名空间来解决你的烦恼!!!C++不同于C的命名方式——带你认识C++的命名空间

命名空间 导读一、什么是C?二、C的发展三、命名空间3.1 C语言中的重名冲突3.2 什么是命名空间?3.3 命名空间的定义3.4 命名空间的使用环境3.5 ::——作用域限定符3.6 命名空间的使用方法3.6.1 通过作用域限定符来指定作用域3.6.2 通过关键字using和关键字namespace…

如何用 Redis 实现延迟队列?

延迟队列是一种常见的消息队列模式,用于处理需要延迟执行的任务或消息。Redis 是一种快速、开源的键值对存储数据库,具有高性能、持久性和丰富的数据结构,因此很适合用于实现延迟队列。在这篇文章中,我们将详细讨论如何使用 Redis…

51单片机两个中断及中断嵌套

文章目录 前言一、中断嵌套是什么?二、两个同级别中断2.1 中断运行关系2.2 测试程序 三、两个不同级别中断实现中断嵌套3.1 中断运行关系3.2 测试程序 总结 前言 提示:这里可以添加本文要记录的大概内容: 课程需要: 提示&#x…

Mysql基础(四)DML之insert语句

一 insert 语句 强调: 本文介绍的内容很基础,仅做记录用,参考价值较少 ① 总述 目的: 增加rows记录1、完整格式insert [into] 表名[字段名1[, 字段名2]] value[s](值1, 值2);备注:指定部分字段添加,没有被指定的字段要么会自动增长,要…