重要: 搞了一天,最后发现是python的版本和cx_Oracle版本对不上。
一开始安装的python版本是3.12,而cx_Oracle的最新版本是8.3.0, 对应的python版本为3.10,因此将python版本降低为3.10, 执行 pip install cx_Oracle 即可成功。
pip install cx_Oracle,执行默认为最新的版本,指定版本可以:pip install cx_Oracle==8.3.0
下面的不知道是否可以解决cx_Oracle 报错问题,我的是版本问题,下面的解决不了,但是在解决的过程中也将下面的操作了,不知道是否也是必须操作的。
1、安装Oracle Instant Client
2、在安装和配置Oracle Instant Client时,设置ORACLE_HOME和TNS_ADMIN环境变量是很重要的,特别是在使用cx_Oracle连接到数据库时。以下是如何设置这两个环境变量的步骤:
设置ORACLE_HOME:找到你的Oracle Instant Client安装目录。这通常是一个包含bin、lib等子目录的文件夹。
在系统环境变量中创建一个名为ORACLE_HOME的新变量,并将其值设置为Oracle Instant Client的安装路径。例如,C:\instantclient_19_12(Windows)或/opt/oracle/instantclient_19_12(Linux)。
确保在设置完环境变量后,你的系统能够正确识别ORACLE_HOME变量。
设置TNS_ADMIN:在Oracle Instant Client的安装目录下创建一个新的目录,用于存放TNS配置文件。通常可以命名为ttns或network\admin等。
将你的tnsnames.ora文件和其他TNS配置文件复制到这个新创建的目录中。
在系统环境变量中创建一个名为TNS_ADMIN的新变量,并将其值设置为包含TNS配置文件的目录路径。例如,C:\instantclient_19_12\ttns(Windows)或/opt/oracle/instantclient_19_12/network/admin(Linux)。
确保在设置完环境变量后,你的系统能够正确识别TNS_ADMIN变量。
设置完ORACLE_HOME和TNS_ADMIN环境变量后,你就可以在Python中使用cx_Oracle连接到Oracle数据库,并且它将能够找到正确的Instant Client安装目录和TNS配置文件。
以下是一个简单的示例tnsnames.ora文件:
ORCLDB =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = example.com)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = oracledb)))TESTDB =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = testdb.example.com)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = testdb)))