Python和Oracle DB-“错误DPI-1050:Oracle客户端库必须为11.2或更高版本”

时间:2018-09-03 15:49:49

标签: python database oracle cx-oracle

几天前,我被要求开发一个能够连接到Oracle DB的Python应用程序。由于我已经安装了Oracle客户端(版本12.2.0),因此我仅安装了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或更高版本”。谷歌搜索之后,我找到了this的答案,并试图将我的代码更改为:

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 DB客户端将数据库与Power BI连接。

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

C:\instantclient_12_1
C:\Users\oracle2\product\12.1.0\client_1
C:\Users\oracle2\product\12.1.0\client_1\bin
C:\Users\oracle\product\12.2.0\dbhome_1\bin

2 个答案:

答案 0 :(得分:3)

该错误表示您在PATH的较早位置安装了另一个较旧版本的Oracle客户端。您应该在计算机上搜索OCI.DLL(使用where.exe或dir命令),然后根据需要移动或删除任何不必要的副本或调整PATH。例如,某些较早的应用程序将OCI.DLL塞入了C:\ Windows \ System32中。

答案 1 :(得分:0)

此问题与Oracle Instant Client版本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 

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

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