# _*_coding:utf-8 _*_
import time
import xlwt
import os
import pymysql
import sys
import datetime
from datetime import datetime, timedelta

class writefile:
    file = r"D:\Users\xx\Desktop"

#查询数据库结果
    def datacommon(self,mounth,day,n,abj):
        res = []
        self.date1 = self.dates(mounth,day,n,abj)
        for date in self.date1:

starttime = date + ' 00:00:00'
            endtime = date + ' 23:59:59'

#连接数据库
            db = pymysql.connect(host="12.12.12.12", user="root", password="sqldb",port=3306, db="test")
            # 使用cursor()方法获取操作游标
            cursor = db.cursor()
            cursor.execute(f"SELECT project_name FROM `data`.`table` WHERE project_name like \"%test%\" AND create_time between '{starttime}' and '{endtime}'")
            project_name = sorted(set(cursor.fetchall()))

for name in project_name:
            #计算主线数据
                cursor.execute(f"SELECT count(*) FROM `data`.`table` where branch_name like lower(trim(\"%-{name[0]}\")) AND status=0 AND create_time between '{starttime}' and '{endtime}'")
                succ_NUM = cursor.fetchall()[0][0]
                cursor.execute(f"SELECT count(*) FROM `data`.`table` where branch_name like lower(trim(\"%-{name[0]}\")) AND status=2 AND create_time between '{starttime}' and '{endtime}'")
                fail_NUM = cursor.fetchall()[0][0]
                if fail_NUM !=0 and succ_NUM !=0:
                    fail_RATE = "%.2f%%" % (fail_NUM / (succ_NUM + fail_NUM) * 100)
                else:
                    fail_RATE = 0

#计算分支数据
                cursor.execute(f"SELECT count(*) FROM `data`.`table` where branch_name like lower(trim(\"%-{name[0]}-%\")) AND status=0 AND create_time between '{starttime}' and '{endtime}'")
                succ_num = cursor.fetchall()[0][0]
                cursor.execute(f"SELECT count(*) FROM `data`.`table` where branch_name like lower(trim(\"%-{name[0]}-%\")) AND status=2 AND create_time between '{starttime}' and '{endtime}'")
                fail_num = cursor.fetchall()[0][0]
                if fail_num !=0 and succ_num !=0:
                    fail_rate = "%.2f%%" % (fail_num / (succ_num + fail_num) * 100)
                else:
                    fail_rate = 0
                res1 = [date,name[0], succ_num, fail_num, fail_rate, succ_NUM, fail_NUM, fail_RATE]
                res.append(res1)
        return res

# 关闭数据库连接
        db.close()

# 判断文件是否已存在
    def if_file_exist(self):
        if os.path.exists(self.file + "\数据展示.xls"):
            os.remove(self.file + "\数据展示.xls")

# 生成excel
    def write_excel(self, res):
        book = xlwt.Workbook()  # 新建一个excel
        sheet = book.add_sheet('导出数据')  # 创建sheet
        title = ['统计区间', '版本','个人信息成功', '个人信息失败', '个人信息有效拦截率', '主线信息通过','主线信息失败','主线信息有效拦截率', '问题分析']  # 写表头

# 循环将title写入excel表头
        i = 0
        for header in title:
            sheet.write(0, i, header)
            i += 1

# 将数据写入Excel
        for row in range(1, len(res) + 1):
            for col in range(0, len(res[row - 1])):
                sheet.write(row, col, res[row - 1][col])
                col += 1
            row += 1
        book.save(self.file + "\数据展示.xls")
        print("导出成功")

def dates(self,mounth,day,n=7,abj=0):
        for i in range(1,n+1):
            if abj != 0:
                the_date = datetime.datetime(2021, mounth, day)  # 指定当前日期 2018-11-10
                the_date = the_date - datetime.timedelta(days=i)
                date = the_date.strftime('%Y-%m-%d')  # 将日期转换为指定的显示格式
            else:
                date = time.strftime('%Y-%m-%d', time.localtime(time.time() - 86400 * i))
            yield date

def writefile(self):
        n=7           #统计天数,默认为7天
        mounth = 12   #统计日期
        day = 12      #统计日期
        abj= 0        #若值为0,则使用当前日期统计;若值为非0,则使用变量日期统计;默认为当前日期为准
        self.if_file_exist()
        res = self.datacommon(mounth,day,n,abj)
        self.write_excel(res)

a=writefile()
a.writefile()

python连接数据库,处理数据结果后生成excel文件相关推荐

  1. python xlwt写入excel_python xlwt模块生成excel文件并写入数据 xlrd读取数据

    python中一般使用 xlwt (excel write)来生成Excel文件(可以控制单元格格式),用 xlrd 来读取Excel文件,用xlrd读取excel是不能对其进行操作的. 1.xlrd ...

  2. 获取jqGrid中的所有数据导出并生成Excel文件流供用户下载(post请求实现文件下载)...

    最近有一个需求是: 将jqGrid表格中的数据生成报表Excel文件返回给用户. 我的想法是获取jqGrid中的数据然后生成json数据,传给后端,生成文件流,响应到前端,保存为excel文件. aj ...

  3. 针对大量数据,MATLAB生成EXCEL文件并进行排版处理的源码

    #MATLAB生成EXCEL文件并进行排版处理的源码 项目要求:给定某海洋站潮位数据在一年之年的每分钟潮位数据(一共有24×60×365=525600个数),txt格式,要求制作出海洋站该年份的潮汐表 ...

  4. python获取json数据,快速生成excel

    需要的python 安装包: pip install requests pip install pandas 一.通过requests 获取网页json数据 url = 'http://192.168 ...

  5. ASP.NET中上传并读取Excel文件数据,附后生成EXCEL及杀掉EXCEL进程。

    本文通过一个简单的例子,实现读取Excel数据文件. 首先,创建一个Web应用程序项目,在Web页中添加一个DataGrid控件.一个文件控件和一个按钮控件. <INPUT id="F ...

  6. 办公自动化:轻松提取PDF页面数据,并生成Excel文件(代码实战)

    发现网上有专门做文档格式转换的网站,不过是要充会员才可以.今天来做一篇PDF转换成Excel文档的代码实战,希望大佬喜欢,哈哈,话不多说,马上进入实战环节. [阅读全文] 首先,我们一如既往的介绍一下 ...

  7. python xlwt模块生成excel文件并写入数据 xlrd读取数据

    python中一般使用 xlwt (excel write)来生成Excel文件(可以控制单元格格式),用 xlrd 来读取Excel文件,用xlrd读取excel是不能对其进行操作的. 1.xlrd ...

  8. python爬取沪深所有股票数据并生成Excel文件

    爬取沪深所有股票数据并生成Excel文件 一.分析需求 1.对于沪深两市的各只股票,获取其:'股票代码', '股票名称', '最高', '最低', '涨停', '跌停', '换手率', '振幅', ' ...

  9. 【Python练习】如何使用Pandas获取“豆瓣电影”相关数据,并生成Excel表格

    使用Python获取"豆瓣电影"相关数据,并生成Excel表格 本文使用了requests和pandas第三方库,对豆瓣电影各相关数据进行爬取,并记录至Excel表格内.但发现存在 ...

最新文章

  1. mysql字符串外键约束_MySQL中的约束函数主外键
  2. 解决IE6下不支持 png24的透明图片问题
  3. 3v stm32 供电 晶振起振_避免stm32rtc晶振不能起振的设计参考
  4. Winsock 入门 判读主机字节序 示例
  5. 文巾解题 面试题 03.06. 动物收容所
  6. ES6-9 对象密封4种方式、assign、取值函数的拷贝
  7. Android TextView设置ClickableSpan 点击结尾空白位置也响应点击的问题
  8. java可以返回微妙吗_Java开发中10个最为微妙的最佳编程实践
  9. dom4j.jar有什么作用?
  10. FD.io VPP基本介绍:理解向量包处理(VPP)
  11. android怎么让图片显示在button上面_opencv怎么样可以实时显示图片HSV值
  12. 四阶龙格库塔matlab计算例题,四阶龙格库塔法matlab实现
  13. python语音识别库kaldi_Kaldi 使用 DFSMN 训练语音模型
  14. python dataframe重新索引_Concat DataFrame重新索引仅对唯一值索引对象有效
  15. 阿里数据服务产品开发及大数据体系(实录/PPT干货)
  16. cad修改快捷键_CAD入门学习技巧:CAD软件中的CAD快捷键的分类
  17. 基金从业考试的考试形式是什么?0906
  18. 看了这个逻辑关系图,才更清晰为何不让你随便外出了
  19. 不同类型的轴承受力简介
  20. 一个软件测试人员的经验分享

热门文章

  1. MySQL 语句整理 2019-5-3
  2. DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与调优
  3. 远程处理Remoting
  4. 我常用的那些linux命令
  5. JAVE EE 企业级开发之从零开始学JAVA【51CTO技术论坛】
  6. 大型网站架构演变和知识体系
  7. swift语言的Block
  8. LeetCode--004--寻找两个有序数组的中位数(java)
  9. php中file_get_contents如何读取大容量文件
  10. 干货 :数据可视化的10个关键术语