前言

需求是对一些人工导出的excel,做成程序自动化执行。解放双手,哈哈。

环境准备

Python 3.9.13

pip install cx_Oracle 
pip install pandas 如果提示其他附加包没装的安装提示进行安装,我的环境以已经安装过了

Oracle数据库客户端

连接oracle需要借助于oracle client ,注意要跟Python的版本一样,如果是64位的oracle client 也要是64位的,需要拷贝5个文件到Python的运行环境,如果是Pycharmd就是放到项目的目录下 venv\Lib\site-packages

  • oci.dll
  • ocijdbc11.dll
  • ociw32.dll
  • oraocci11.dll
  • oraociei11.dll

Oracle Client 64位我会放到文章的末尾,供大家快速下载

上代码

import pandas as pd
import cx_Oracle

try:
    con = cx_Oracle.connect('username/password@ip:port/sid')
    cursor = con.cursor()
    cursor.execute("select id as \"主键ID\",od_name as \"O单名称\",type as \"类型\",year_month as \"年月\" from OD_OUTSIDE_INTERFACE_STAT where rownum = 1")

    # 获取列名
    col = [x[0] for x in cursor.description]
    
    # 如果不想用列明作为excel表头,可以自定义,参考下面示例
    # col= ['主键ID2', 'O单名称2', '类型2', '年月2']
    df = pd.DataFrame(cursor.fetchall(), columns = col)
    df.to_excel("C:\\Users\\Administrator\\Desktop\\测试1.xlsx", index=False)
except cx_Oracle.DatabaseError as e:
    print("异常")
finally:
    if cursor:
        cursor.close()
    if con:
        con.close()

总结复盘

主要是在连接oracle上花费了很长时间,必须借助于Oracle Client进行处理,因为我本地windows没安装Oracle Client,借助了一个外部免安装的dll来处理的。Mac版本的还没试过,后面我会再更新一起Mac版本环境下如何连接。

pandas 这个工具比较好用,读取excel和写入excel都很方便,目前对它的API还不是很精通。

Oracle Client 64位下载