我正在尝试连接到Oracle数据库,但是python脚本找不到cx_Oracle。这是我的剧本:
import cx_Oracle
con = cx_Oracle.connect(‘DBNAME/testitout@www.xx.yy.zz:1521/yeppers’)
print(con.version)
con.close()
这是我得到的错误:
================= RESTART: C:\Python35\Connect_To_Oracle.py =================
Traceback (most recent call last):
File "C:\Python35\Connect_To_Oracle.py", line 1, in <module>
import cx_Oracle
cx_Oracle.DatabaseError: DPI-1047: Oracle Client library cannot be loaded: The specified module could not be found. See https://oracle.github.io/odpi/doc/installation.html for help
这是我的操作系统和版本信息:
以下是我安装cx_Oracle所做的工作:
1. Download Instant Client (Basic Client) from Oracle here : http://www.oracle.com/technetwork/topics/winx64soft-089540.html .
2. Unzip.
3. I added a new System Variable called ORACLE_HOME and pointed it to c:\Down\InstantClient , which is where I unzipped the above. This is what I downloaded: instantclient-basic-windows.x64-12.2.0.1.0
4. You have to download the whl file from here: https://pypi.python.org/pypi/cx_Oracle/ To do this, you need to know your version of Python and your type of processor.
5. You download into the scripts folder and then run pip install wheelfilename.whl
有人可以让我知道他们认为错误源于什么?
答案 0 :(得分:3)
DPI-1047错误中的说明URL显示将PATH设置为Instant Client库的位置。您还需要正确的VS Redistributable - 所有内容都在说明中给出。请注意,他们没有提及设置ORACLE_HOME。
确保Instant Client与Python相同的32位或64位架构。
答案 1 :(得分:2)
当我设置我的python环境时,我在我的PATH变量中为Windows框添加了instantclient文件,我甚至没有为ORACLE_HOME定义任何东西。将其添加到PATH可能有助于此过程。
但是当你安装了whl文件时没有错误或消息?
您是否可以通过pip安装cx_Oracle模块? cx_Oracle网站将命令列为python -m pip install cx_Oracle
,但我相信如果正确设置了PATH变量,您应该可以使用pip3 install cx_Oracle
。
你在$ Python / Lib / site-packages /目录中看到cx_Oracle吗?如果您无法找到您的网站套餐,请在您的IDLE中使用它来查找它的位置。
>>> import site
>>> site.getsitepackages()
['C:\\Python36', 'C:\\Python36\\lib\\site-packages']
答案 2 :(得分:0)
我通过从https://www.oracle.com/technetwork/topics/winx64soft-089540.html下载oracle即时客户端并将该文件夹的位置添加到Windows路径来解决了该问题。对我来说很好!
答案 3 :(得分:-1)
请按照以下步骤操作 苹果系统 ODPI-C需要使用Oracle Client库,该库可在macOS的Oracle Instant Client中找到。
在macOS上,ODPI-C首先使用标准库搜索顺序搜索名为“ libclntsh.dylib”的库。如果找不到此文件,它将在返回错误之前搜索“ libclntsh.dylib.18.1”,“ libclntsh.dylib.12.1”,然后搜索“ libclntsh.dylib.11.1”。
Oracle Instant ClientZip¶ 要使用Oracle Instant Client zip文件运行ODPI-C应用程序,请执行以下操作:
从此处下载18、12或11.2“ Basic”或“ Basic Light” zip文件。选择与您的应用程序体系结构匹配的64位或32位程序包。大多数应用程序使用64位。
将软件包解压缩到应用程序可访问的单个目录中。例如:
mkdir -p / opt / oracle
解压缩Instantclient-basic-macos.x64-12.2.0.1.0.zip
添加指向$ HOME / lib或/ usr / local / lib的链接,以使应用程序能够找到该库。例如:
mkdir〜/ lib
ln -s /opt/oracle/instantclient_12_2/libclntsh.dylib〜/ lib /
或者,复制所需的OCI库。例如:
mkdir〜/ lib
cp /opt/oracle/instantclient_12_2/{libclntsh.dylib.12.1,libclntshcore.dylib.12.1,libons.dylib,libnnz12.dylib,libociei.dylib}〜/ lib /
对于Instant Client 11.2,必须复制OCI库。例如:
mkdir〜/ lib cp /opt/oracle/instantclient_11_2/{libclntsh.dylib.11.1,libnnz11.dylib,libociei.dylib}〜/ lib / 如果打算将可选的Oracle配置文件(例如tnsnames.ora,sqlnet.ora或oraaccess.xml)与Instant Client一起放置,请创建一个network / admin子目录(如果不存在)。例如:
mkdir -p / opt / oracle / instantclient_12_2 / network / admin 这是与此即时客户端链接的应用程序的默认Oracle配置目录。
或者,可以将Oracle配置文件放在另一个可访问的目录中。然后将环境变量TNS_ADMIN设置为该目录名称。