• 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)
  • 相关阅读:
    Windows 编程
    javascript 快速入门
    python 在windows下监听键盘按键
    eleme 项目使用到的库
    lftp 快速使用
    自动测试工具
    Cookie(1)
    fillder script使用
    Boost.Hana
    Haskell语言学习笔记(50)Extra
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349125.html
Copyright © 2020-2023  润新知