• python 读文件 oracle excel 多维数组


    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    import MySQLdb
    from datetime import datetime
    import cx_Oracle
    import os
    import xlwt
    import sys
    import re
    import time
    
    reload(sys)
    sys.setdefaultencoding('utf-8')
    os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
    import datetime  # 导入日期时间模块
    
    f = open("aaaa.txt")
    array = []
    list = [[] for i in range(43)]
    print list
    i = 0
    j = 4
    x = 0
    for line in f:
        line = line.strip()
        if re.match("^d", line):
            print line
            for x in range(j):
                print x
                print line.split('	')[x]
                list[i].append(line.split('	')[x])
                print list
                # list[i][x]=line.split('	',4)[x]
                # list[i].append(line.split('	',4)[x])
        else:
            continue
        i = i + 1
        print 'iiiiiiiiii'
        print i
    f.close
    print '--------------------------------------------------'
    print list
    
    print str(int(list[0][2]) - 5)
    def get_data(a,b,c,d):
        # 创建数据库连接.
        conn = cx_Oracle.connect('y/x@10.1.1.1/EDZFDB')
        # 创建游标
        cur = conn.cursor()
        # 执行查询,
        aa=a
        print aa
        cc=b
        dd=c
        ee=d
        cur.prepare("""select /*+ parallel (a 8)*/ * from h_beps_paymentbook a where a.workdate >= :aa  and a.payeracc = :cc and a.payeeacc = :dd and a.amount = :ee""")
        cur.execute(None,{'aa':aa,'cc':cc,'dd':dd,'ee':ee})
        # 由于查询语句仅会返回受影响的记录条数并不会返回数据库中实际的值,所以此处需要fetchall()来获取所有内容。
        result = cur.fetchall()
        # 关闭游标
        cur.close()
        # 关闭数据库连接
        conn.close
        # 返给结果给函数调用者。
        return result
    def write_data_to_excel(result):
        y=0
        # 将sql作为参数传递调用get_data并将结果赋值给result,(result为一个嵌套元组)
        result = result
        # 实例化一个Workbook()对象(即excel文件)
        wbk = xlwt.Workbook(encoding='utf-8')
        # 新建一个名为Sheet1的excel sheet。此处的cell_overwrite_ok =True是为了能对同一个单元格重复操作。
        sheet = wbk.add_sheet('Sheet1', cell_overwrite_ok=True)
        # 获取当前日期,得到一个datetime对象如:(2016, 8, 9, 23, 12, 23, 424000)
        #today = datetime.today()
        # 将获取到的datetime对象仅取日期如:2016-8-9
        #today_date = datetime.date(today)
        # 遍历result中的没个元素。
        titlelist=['cnaps']
        # for i in xrange(len(titlelist)):
        #     sheet.write(1, i, titlelist[i])
        # wbk.save(name + str(yesterday) + '.xls')
        # 对result的每个子元素作遍历,,遍历多维数组,result[i]为2维数组
        for i in xrange(len(result)):
            ##result[i] 表示一个2维数组
            xx=result[i]  ##得到一个2维数组 
            #result[i][j]得到一个一维数组
            for j in xrange(len(xx)):
            #遍历每个一维数组,将每个值写入
              yy=result[i][j] ##得到一个一维数组
              y=y+1
              for k in xrange(len(yy)):
                print  result[i][j][k]
                sheet.write(y, k, yy[k])
        # 以传递的name+当前日期作为excel名称保存。
        wbk.save('cnaps'  + '.xls')
    arr=[]
    for x in list:      
      print x
      try :
        aa=get_data(x[2],x[0],x[1],x[3])
        print aa
        print type(aa)
        arr.append(aa)
      except Exception ,e:
        print  e
    print arr
    print type(arr)
    time.sleep(10)
    write_data_to_excel(arr)
  • 相关阅读:
    Codeforces 1163E 高斯消元 + dfs
    Codeforces 1159E 拓扑排序
    Codeforces 631E 斜率优化
    Codeforces 1167F 计算贡献
    Codeforces 1167E 尺取法
    Gym 102007I 二分 网络流
    Codeforces 319C DP 斜率优化
    Codeforces 1163D DP + KMP
    Comet OJ
    Vue 的响应式原理中 Object.defineProperty 有什么缺陷?为什么在 Vue3.0 采用了 Proxy,抛弃了 Object.defineProperty?
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349125.html
Copyright © 2020-2023  润新知