20170529计划---统计业务量并生成EXCEL通过邮件发送
每个月都要统计这些业务量的东东,烦死了,赶紧通过python写一个来搞定吧,三天搞定吧,未完待续哈。
2017-5-29 19:50粗略地做了一个思维导图哈

终于第三天完成啦
1 #encoding=utf-8 2 import cx_Oracle as oracle 3 import MYSQLdb as mysql 4 from datetime import datetime 5 import xlsxwriter 6 import sys 7 ''' 8 author:poleaxe 9 function:实现统计应用业务量 10 原理:读取按照格式的yewu.sql,再将SQL分别查询并返回结果到列表, 11 最后创建xlsx文件并写入列表结果 12 13 yewu.sql格式: 14 --系统 15 --业务指标 16 --数据库 17 select count(1)/#day from dual 18 where createdate > #starttime 19 and createdate < #endtime 20 --end 21 依此类推 22 ''' 23 reload(sys) 24 sys.setdefaultencoding('gbk') 25 username = '' 26 password = '' 27 epcis = '' 28 epods = '' 29 cxcc = '' 30 nba4ot = '' 31 claim = '' 32 sqlfile = 'yewu.sql' 33 day='31' 34 starttime = '2017-05-01' 35 endtime = '2017-06-01' 36 37 #格式化yewu.sql文件,按照系统、业务、数据库、SQL分割为一个二维列表 38 def sql_file(sqlfile): 39 a = open(sqlfile).read.split('--end') 40 b = [] 41 for i in a: 42 if i=='' or i =="\n\n": 43 continue 44 for j in i.split('--'): 45 b.append(j.strip()) #清理列表元素空格 46 arr1 = [] 47 arr2 = [] 48 flag = 0 49 for k in b: 50 while flag >3: #创建有4个元素的arr2加入arr1列表 51 arr1.append(arr2) 52 #初始化arr2 53 flag = 0 54 arr2 = [] 55 print arr1 56 else: 57 if k!='' and k!='\n\n' and k!='\n\n\n': 58 arr2.append(k) 59 flag += 1 60 #替换列表里的#day、#starttime及#endtime 61 for i in range(len(arr1)): 62 arr1[i][3] = arr1[i][3].replace("#day",day) 63 arr1[i][3] = arr1[i][3].replace("#starttime",starttime) 64 arr1[i][3] = arr1[i][3].replace("#endtime", endtime) 65 return arr1 66 67 #查询二维列表的oracle SQL语句 68 def oracle_select(db,sqlstr): 69 listnew = '' 70 sql = '' 71 try: 72 conn = oralce.connect(username,password,db) 73 cur = conn.cusor() 74 sql = cur.excecute(sqlstr) 75 except Exception, e: 76 print e.message 77 else: 78 listnew = sql.fetchone() 79 cur.close() 80 conn.close 81 return listnew 82 83 #查询没有mysql数据库的,果断pass哈 84 def mysql_select(db,sql): 85 pass 86 87 88 #创建EXCEL表格 89 def write_excel(info): 90 date_now == datetime.now().strftime("%Y%m%d") 91 xlsxfilename = '产险IT经营情况报表'.decode('utf-8').encode('gbk') 92 workbook = xlsxwriter.Workbook(xlsxfilename,{'constant_memory':True}) 93 worksheet = workbook.add_worksheet() 94 title = ["关键系统名称","业务类别","数据库","日均业务量"] 95 for i in range(len(title): 96 worksheet.write(0,i,title[i].decode('uft-8').encode('gbk')) 97 for i in range(len(info)): 98 for row, row_date in enumerate(info[i]): 99 print row,row_date 100 worksheet.write(i+1,row,row_date) 101 workbook.close() 102 return xlsxfilename 103 104 def main(): 105 info = sql_file(sqlfile) 106 list_result = [] 107 for sql in info: 108 list_result.append(oracle_select(sql[2],sql[3]) 109 listnew = [] 110 for i in list_result: 111 listnew.append(i[0]) 112 for j in range(len(info)): 113 info[j][3] = listnew[j] 114 print info 115 write_excel(info) 116 117 if __name__ == '__main__': 118 main()
浙公网安备 33010602011771号