Python 和 Oracle 数据库 - "Error DPI-1050: Oracle Client library must be at version 11.2 or higher"

Python and Oracle DB - "Error DPI-1050: Oracle Client library must be at version 11.2 or higher"

几天前,有人要求我开发一个能够连接到 Oracle 数据库的 Python 应用程序。由于我已经安装了 Oracle 客户端(版本 12.2.0),我只是 pip 安装 cx_Oracle 并尝试使用以下代码建立连接:

import pandas as pd
import cx_Oracle

connection = cx_Oracle.connect('username/password@service_as_described_in_tnsnames.ora')
cur=connection.cursor()

input("Press Enter to continue...")

cur.execute('select* from MY_PRETTY_TABLE')
for line in cur:
    print()

cur.close()
connection.close()

但是当尝试 运行 它时,我收到错误消息“DPI-1050:Oracle 客户端库必须为 11.2 或更高版本”。谷歌搜索后,我找到了 答案,并尝试将我的代码更改为:

my_dsn = cx_Oracle.makedsn("host",port,sid="sid")
connection = cx_Oracle.connect(user="user", password="password", dsn=my_dsn)
cursor = connection.cursor()

querystring = "SQL query"
cursor.execute(querystring)

但是,同样的错误。重要的是要注意,我已经在同一台机器上使用了 Oracle 数据库客户端,将数据库与 Power BI 连接。

此外,如果有帮助,我的路径设置为:

C:\instantclient_12_1
C:\Users\oracle2\product.1.0\client_1
C:\Users\oracle2\product.1.0\client_1\bin
C:\Users\oracle\product.2.0\dbhome_1\bin

该错误意味着您在 PATH 中较早的某个位置安装了 另一个 旧版本的 Oracle 客户端。您应该在您的机器上搜索 OCI.DLL(使用 where.exe 或 dir 命令)并移动或删除任何不需要的副本或根据需要调整 PATH。例如,某些较旧的应用程序在 C:\Windows\System32 中填充 OCI.DLL 不正确。

此问题与 Oracle Instant 客户端版本 19.3.0.0.0 有关。 我卸载了它并安装了以前版本的 Oracle Instant client 12.2.0.1.0 并且它可以工作。 https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

尝试上述操作之前需要做的重要事情:

来自 Windows 命令提示符

c:> where oci.dll 

确保只找到一个条目并删除多余的条目。

确保将环境路径设置为新安装的客户端。