Python连接Oracle

前言

在写一个脚本用于查询Oracle数据做一些监控,最开始以为和mysql一样简单,结果弄了两个小时没弄好

主要遇到的问题

anaconda下载的依赖cx_Oracle不能在代码里面引用

在conda环境下载了cx_Oracle依赖,结果在代码中引用一直报红线,并且运行代码找不到cx_Oracle模块

创建venv环境并使用pip3来下载依赖遇到的问题(这个可能只是我的电脑上会出现的问题)

在conda环境反复尝试很多次之后,放弃了使用conda来下载依赖,转而使用venv环境,并使用venv下面的pip3来下载
cx_Oracle,结果下载的时候报错,报错内容找不到了,我记得是缺少Microsoft Visual C++ Build Tools工具,因此网上找了
下载安装即可

下载地址:
https://devblogs.microsoft.com/python/unable-to-find-vcvarsall-bat/

Oracle Client版本不对

连接Oracle比Mysql繁琐之处就在这里,需要引用本地的Oracle客户端,这个客户端是Oracle官方提供的一个客户端,我认为可以理解为一个
驱动包,在navicat for oracle的安装包下面就有这个,也可以自行下载,需要注意的是下载正确版本的客户端(主要是oracle client和python cx_Oracle依赖的版本要一致),最开始我下载的是64位
客户端,然后就报错:Python cx_Oracle error “DPI-1047: Cannot locate a 32-bit Oracle Client”

于是重新下载一个32位的客户端,下载地址:
https://www.oracle.com/database/technologies/instant-client/microsoft-windows-32-downloads.html

参考文章

https://stackoverflow.com/questions/57250111/python-cx-oracle-error-dpi-1047-cannot-locate-a-32-bit-oracle-client
https://blog.csdn.net/bbhdeal/article/details/81144783

原文地址:https://www.cnblogs.com/alinainai/p/13677968.html