python读取数据库出txt报表
python出报表使用到了数据库访问,文件读写,字符串切片处理。还可以扩展到电子邮件的发送,异常处理以及定时批任务。
总之在学习中发现还是有蛮多乐趣在其中。
#coding=utf-8
__date__='' import cx_Oracle
import os
import time isExt=os.path.exists('V:/report/%s'%time.strftime('%Y%m%d',time.localtime()))
if not isExt:
os.mkdir('V:/report/%s'%time.strftime('%Y%m%d',time.localtime()))
file_name='V:/report/%s/%s.txt'%(time.strftime('%Y%m%d',time.localtime()),time.strftime('%Y%m%d',time.localtime())) sql='''select t.merchant,
t.type,
aes128_decrypt(t.accountno) accountno,
t.amount,
t.seq,
t.date,
t.merchant_order_id,
t.merchant_order_date,
t.charge,
t.success_time,
decode(t.status,'00','成功','01','失败') status
from hpay.trans_info_log t
where t.type = 'debit'
and t.status = '00'
''' conn=cx_Oracle.connect('username/password@host:port/SERVICE_NAME')
c=conn.cursor()
x=c.execute(sql)
results=x.fetchall()#得到总结果
with open(file_name,'w') as f:#w表示写
f.write('总条数=%s\n商户号|交易类型|银行卡号|交易金额|交易流水号|交易时间|商户订单号|商户订单时间|交易手续费|交易成功时间|交易状态\n'%len(results))
for re in results:#遍历每一行
with open(file_name,'a') as w:#a表示追加
acctno=str(re[2])
newacctno=(acctno[:4]+acctno[-4:].rjust(len(acctno)-4,'*'))#对卡号进行特殊处理,卡号前4后4中间*号显示
w.write(str(re[0])+'|'+str(re[1])+'|'+str(newacctno)+'|'+str(re[3])+'|'+str(re[4])+'|'+str(re[5])+'|'+str(re[6])+'|'+str(re[7])+'|'+str(re[8])+'|'+str(re[9])+'|'+str(re[10])+'\n')
c.close()
conn.close()
运行代码,得到结果展示:

额外补充一下字符串对齐各种方法的区别:
S.ljust(width,[fillchar]) #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
S.rjust(width,[fillchar]) #右对齐
S.center(width, [fillchar]) #中间对齐
S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足
python读取数据库出txt报表的更多相关文章
- python读取数据库并把数据写入本地文件
一,介绍 上周用jmeter做性能测试时,接口B传入的参数需要依赖接口A生成的借贷申请ID,接口A运行完需要把生成的借贷申请ID导出来到一个文件,作为参数传给接口B,刚开始的时候,手动去数据库倒, 倒 ...
- python读取数据库mysql报错
昨天在学习PYTHON读取数据库的知识时,一直在报错,找不到原因. 最后同事说是语法错误. import sysreload(sys)sys.setdefaultencoding('gb18030') ...
- python读取数据库数据,读取出的中文乱码问题
conn = pymysql.connect( host='127.0.0.1', port=3302, user='username', passwd='password', db=database ...
- python读取、写入txt文本内容
转载:https://blog.csdn.net/qq_37828488/article/details/100024924 python常用的读取文件函数有三种read().readline().r ...
- python读取数据库数据有乱码怎么解决?
http://blog.sina.com.cn/s/blog_6826662b0100yeze.html 简单暴力,直接上代码 conn = MySQLdb.connect(host = " ...
- python 读取数据库中文内容显示一堆问号
需要在连接数据库时 设置编码格式 def select_db(self,db_name): self.conn = MySQLdb.connect( host = self.ip, port = se ...
- python 读取数据库时,datetime类型无法被json序列化--解决方案
新增针对datetime的jsonencode: # -*- coding: utf-8 -*- import json from datetime import date, datetime cla ...
- 孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录
孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数 ...
- Python读取txt文件
Python读取txt文件,有两种方式: (1)逐行读取 data=open("data.txt") line=data.readline() while line: print ...
随机推荐
- ADT工具使用详解
备注:一下内容为本人手工翻译官方文档注解,如有翻译不到位的地方,欢迎批评指正; ADT(Android开发工具)是Eclipse的插件,它提供了一套与Eclipse IDE集成的工具.它可以让您访问许 ...
- 去除 ServiceStack.Redis 的6000次限制。
方法一. 下载 https://github.com/ServiceStack/ServiceStack.Text 修改LicenseUtils.cs文件中的AssertValidUsage var ...
- C语言博客作业5--指针
C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...
- NOIP 2018 Day1
Fei2Xue@Lian$Tian! 三道原题qwq真的凉 半年前看到有人发说说,梦见省选打开题目,是Please contact lydsy2012@163.com! 没想到一语成谶 大众分300 ...
- visual studio split edit window 编辑器窗口分屏
OR
- Url的拦截问题
如果 在中没有, 就会去找欢迎页,先找/index,jsp,在webapp里并没有,就继续往下找/index.html, 是图中的拦截形式,就会被servlet拦截,对应于controller中的请求 ...
- 性能学习随笔(1)--负载均衡之f5负载均衡
负载均衡设计涉及软件负载和硬件负载,下文转自CSDN中一篇文章涉及f5硬负载知识 ----转载:https://blog.csdn.net/tvk872/article/details/8063489 ...
- JDBC数据库连接参数备忘
database driver url remark MySql com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/xxx mysql-connect ...
- gradle问题汇总
问题:从SVN下载到本地后,gradle无法同步,报错如下:Failed to resolve: support-core-utilsFailed to resolve: support-media- ...
- jquery中添加元素append,prepend,before和after方法的区别
append:在元素内部的最后面添加元素,作为子元素. prepend:在元素内部的最前面添加元素,作为子元素. before:在元素的前边,作为兄弟元素添加. after:在元素的后边,作为兄弟元素 ...