使用Python链接数据库查询数据,并将查询结果写入到Excel中,实现方法上主要有两步,第一,查数据,第二,写Excel。

一、导入需要的包

import time
import xlwt
from commontool import dbtool
import os

二、查数据,并返回查询结果

  查询数据传入指定日期,使用指定日期在数据库中查询该日期区间的交易。因为传入的日期为字符串,第一步需要将传入的字符串转换成时间数组,第二步再将传入的日期转换成自己想要的时间格式。

class writefile:
file = r"F:\python\PycharmProjects\pythonpractice\fileshandle\Files"
def querydata(self,date):
"""查询数据库结果"""
self.date = date
datestruct = time.strptime(self.date,"%Y%m%d") # 将字符串转换成时间数组
date = time.strftime("%Y-%m-%d",datestruct) # 将时间转换成其他格式
starttime = date + ' 00:00:00'
endtime = date + ' 23:59:59'
db = dbtool.db()
orderquery = "select merchantid,payorderid,state,paytime,innerbank from ordersummary where paytime between '%s' and '%s' ; " %(starttime,endtime)
res = db.dbquery(db.dbconnect()[3],orderquery).fetchall()
return res

三、将查询结果写入到Excel

  将查询结果写入到Excel,这里使用的是xlwt模块,首先要做的是:创建一个Excel,再创建一个sheet页,需要表头的话,也需要写一个表头。表头的格式是一个列表。

  这里需要注意的是:

  (1)range函数是不包含stop数的,所以这里要写入查询的全部数据的话,需要给len(res)+1。比如:查询结果有5个,range(1,4)时,只能是1,2,3,4,就会漏掉5,所以需要给查询结果加上一个1。

  (2)row = 1代表Excel的第二行(第一行是表头),那么在第二行要写入查询的数据的话,应该写入查询数据的第一行,所以 sheet.write(row,col,res[row-1][col]) 中使用了row-1。

    def write_excel(self,res):
"""操作Excel"""
book = xlwt.Workbook() # 新建一个Excel
sheet = book.add_sheet('导出数据') # 创建sheet
title = ['商户号','流水号','交易状态','交易时间','交易渠道'] # 写表头 # 循环将表头写入到sheet页
i=0
for header in title:
sheet.write(0,i,header)
i+=1 # 写数据
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("导出成功")

四、判断生成Excel是否重复

  文件生成是在一个路径下,要重复生成需要判断该路径下是否存在该文件,如果存在,则删除,或者重命名,再或者移动到备份路径下,这里使用的是重复就删除。

  删除文件这里使用到了os模块。

    def judge_file_exist(self):
if os.path.exists(self.file+"\交易导出.xls"):
os.remove(self.file+"\交易导出.xls")

五、主要流程就是以上几步,现在需要主函数将其串起来。

  先判断文件是否存在,然后在调用写文件方法。

    def writefile(self):
date = ''
self.judge_file_exist()
self.write_excel(self.querydata(date))

python 连接数据库,查询结果写入数据到excel的更多相关文章

  1. Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据

    背景 Python中,想要打开已经存在的excel的xls文件,然后在最后新的一行的数据. 折腾过程 1.找到了参考资料: writing to existing workbook using xlw ...

  2. Python中生成(写入数据到)Excel文件

      转自http://www.crifan.com/export_data_to_excel_file_in_python/ 在Python中,如何将数据,导出为Excel,即把数据写入到新生成的ex ...

  3. Python常见问题 - 写入数据到 excel 报 ValueError: invalid literal for int() with base 10 错误

    背景 在上写入数据到excel中,报了以下错误 出现原因 对于写入excel场景下出现该错误的话,很大概率是写入数据的单元格原本的数据格式有问题 解决方法 清理掉单元格的旧数据,然后再写入就可以了

  4. [ES]Python查询ES导出数据为Excel

    版本 elasticsearch==5.5.0 python==3.7 说明 用python查询es上存储的状态数据,将查询到的数据用pandas处理成excel code # -*- coding: ...

  5. 使用python脚本从数据库导出数据到excel

    python从数据库导出数据到excel 最近需要从数据库里导出一些数据到excel,刚开始我是使用下面的命令 select * from xxx where xxx into outfile 'xx ...

  6. 利用python将mysql中的数据导入excel

    Python对Excel的读写主要有xlrd.xlwt.xlutils.openpyxl.xlsxwriter几种. 如下分别利用xlwt和openpyxl将mysql数据库中查询的数据保存到exce ...

  7. NPOI操作excel之写入数据到excel表

    在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...

  8. python连接数据库--查询数据

    #!/usr/bin/python # -*- coding: utf-8 -*- import pymysql def fileDB(): # 打开数据库连接(ip/数据库用户名/登录密码/数据库名 ...

  9. python 使用openpyxl来写数据到excel表格

    使用openpyxl写execl确实很方便.我先介绍用到的相关模块与函数 Workbook:工作簿模块,在内存创建一个工作簿. ExcelWriter:使用它向exel中写数据. get_column ...

随机推荐

  1. Windows下使用PuTTY连接Centos7、Linux系统目录结构、一些操作命令

    PuTTY可以远程管理Linux.PuTTY官网:https://www.putty.org/ 一.使用PuTTY连接Centos7 下载安装后,打开如下图: 1.输入主机名或IP地址2.端口号默认2 ...

  2. Consul作为配置中心,配置Asp.Net Core应用程序

    前言 最近项目逐步转向基于.Net Core,目前dotnet core 虽然已出3.0了但还没有特别成熟的框架,要实现微服务,必须要解决配置中心的问题 .不管是不是微服务,节点多了配置文件一个个更改 ...

  3. HTTPS配置,SSL证书配置

    阿里云SSL证书配置: Appache服务器:https://help.aliyun.com/knowledge_detail/95493.html Tomcat服务器:https://help.al ...

  4. C# 常用排序算法

    文章引用地址:https://www.cnblogs.com/fengyeqingxiang/archive/2019/06/14/11021852.html C#所有经典排序算法汇总   1 2 3 ...

  5. centos7删除MariaDB怎么操作

    有时我们要在centos上安装一些组件,需要先把原来的数据库删除,比如MariaDB,不然就出现冲突错误,那么如何删除数据库呢?首先查询所安装的MariaDB组件: [root@localhost l ...

  6. 第04组 Beta冲刺(4/5)

    队名:new game 组长博客 作业博客 组员情况 鲍子涵(队长) 过去两天完成了哪些任务 地图移动 接下来的计划 素材和脚本相连 引入声音素材 还剩下哪些任务 让游戏本体运行 遇到了哪些困难 时间 ...

  7. 实例属性和方法的动态处理(__getattr__)

    正常情况下,当调用类的方法或属性时,如果不存在,就会报错 要避免这个错误,除了可以加上那个要调用但不存在的属性外,Python还有另一个机制,那就是写一个__getattr__()方法,动态返回一个属 ...

  8. openpyxl常用API

    worksheet.cell(self, row, column, value=None)描述:给指定位置的单元格赋值参数: row&column:必须参数,单元格的坐标 value:可选参数 ...

  9. 利用zabbix监控ogg进程(Windows平台下)

    本文给大家介绍如何监控windows平台下的ogg程序.(注:所有操作都在administrator用户下面进行操作) 监控linux平台下的ogg程序请看:https://www.cnblogs.c ...

  10. Percona XtraDB Cluster简易入门 - 安装篇

    说明 Percona XtraDB Cluster(简称PXC),是由percona公司推出的mysql集群解决方案.特点是每个节点都能进行读写,且都保存全量的数据.也就是说在任何一个节点进行写入操作 ...