python 连接数据库,查询结果写入数据到excel
使用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的更多相关文章
- Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据
背景 Python中,想要打开已经存在的excel的xls文件,然后在最后新的一行的数据. 折腾过程 1.找到了参考资料: writing to existing workbook using xlw ...
- Python中生成(写入数据到)Excel文件
转自http://www.crifan.com/export_data_to_excel_file_in_python/ 在Python中,如何将数据,导出为Excel,即把数据写入到新生成的ex ...
- Python常见问题 - 写入数据到 excel 报 ValueError: invalid literal for int() with base 10 错误
背景 在上写入数据到excel中,报了以下错误 出现原因 对于写入excel场景下出现该错误的话,很大概率是写入数据的单元格原本的数据格式有问题 解决方法 清理掉单元格的旧数据,然后再写入就可以了
- [ES]Python查询ES导出数据为Excel
版本 elasticsearch==5.5.0 python==3.7 说明 用python查询es上存储的状态数据,将查询到的数据用pandas处理成excel code # -*- coding: ...
- 使用python脚本从数据库导出数据到excel
python从数据库导出数据到excel 最近需要从数据库里导出一些数据到excel,刚开始我是使用下面的命令 select * from xxx where xxx into outfile 'xx ...
- 利用python将mysql中的数据导入excel
Python对Excel的读写主要有xlrd.xlwt.xlutils.openpyxl.xlsxwriter几种. 如下分别利用xlwt和openpyxl将mysql数据库中查询的数据保存到exce ...
- NPOI操作excel之写入数据到excel表
在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...
- python连接数据库--查询数据
#!/usr/bin/python # -*- coding: utf-8 -*- import pymysql def fileDB(): # 打开数据库连接(ip/数据库用户名/登录密码/数据库名 ...
- python 使用openpyxl来写数据到excel表格
使用openpyxl写execl确实很方便.我先介绍用到的相关模块与函数 Workbook:工作簿模块,在内存创建一个工作簿. ExcelWriter:使用它向exel中写数据. get_column ...
随机推荐
- Azure 架构师认证考试
Azure认证路线 AZ-300 AZ-301 https://blog.csdn.net/pg_edb/article/details/86794505 免费题 https://iteablue.c ...
- BIM工程信息管理新系统- 系统管理模块
系统管理模块 1.实体类 public partial class T_Role { public string RoleId { get; set; } public string RoleName ...
- [靶场实战]:SQL注入-显错注入
SQL注入的本质:就是将用户输入的数据当作代码带入执行. 注入条件: 1.用户能控制输入 2.能够将程序原本执行的代码,拼接上用户输入的数据进行执行 首先检查是否存在注入点 Rank1: 构造语句 ? ...
- Linux系统学习 一、安装,调试
环境 主机: Windows 10 虚拟机: VMware 15 Pro 镜像: 一.安装过程: 然后开启虚拟机 设置主机名 时区 密码 最小安装 等着 重启 登录 二.配置静态IP地址 输入ifco ...
- java8-13-默认方法 静态方法 重复注解 类型注解
java8增加默认方法 静态方法 重复注解 类型注解 1.默认方法 default修饰 为什么要有这个特性? 当修改接口时候,需要修改全部实现该接口的类.为了解决这个问题,所以引进默认方法 ...
- mock 模拟数据在框架中的简单使用
首先在框架中需要安装mock模块 cnpm i mockjs -S 其次在src文件夹下新建mock文件夹,在mock文件夹中新建一个index.js文件 代码如下: const Mock = req ...
- Codeforces Round #603 (Div. 2) F. Economic Difficulties dp
F. Economic Difficulties An electrical grid in Berland palaces consists of 2 grids: main and reserve ...
- [Pytorch Bug] "EOFError: Ran out of input" When using Dataloader with num_workers=x
在Windows上使用Dataloader并设置num_workers为一个非零数字,enumerate取数据时会引发"EOFError: Ran out of input"的报错 ...
- 通过ES6 Module看import和require区别
前言 说到import和require,大家平时开发中一定不少见,尤其是需要前端工程化的项目现在都已经离不开node了,在node环境下这两者都是大量存在的,大体上来说他们都是为了实现JS代码的模块化 ...
- Python画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~)one 樱花树 动态生成樱花效果图(这个是动态的) ...