我希望能够通过 python 连接到 Oracle 10.1.0.2.0(安装在不同的机器上)。
我的 comp 在安装了 Python 2.6 的 Ubuntu 9.04 Jaunty 上运行。
我已经下载并解压了 instantclient-basic-linux32-10.1.0.5-20060511.zip
,设置 LD_LIBRARY_PATH
和 ORACLE_HOME
指向我解压的目录。
然后我下载了 cx_Oracle-5.0.2-10g-py26-1.i386.rpm
并安装了它:
$sudo alien -i cx_Oracle-5.0.2-10g-py26-1.i386.rpm
当我运行时
$python -c 'import cx_Oracle'
我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /usr/lib/python2.6/cx_Oracle.so: undefined symbol: OCIClientVersion
帮助将不胜感激。
最佳答案
我相信 OCIClientVersion 需要 Oracle 10g 第 2 版,但您使用的是第 1 版。
您下载的 cx_Oracle 二进制文件似乎是使用 -DORACLE_10GR2 编译的,这使得它包含 OCIClientVersion 调用。由于这是一个仅限编译时的选项,因此确实应该分别下载 10g 和 10gR2,但似乎没有:
This module has been built with Oracle 9.2.0, 10.2.0, 11.1.0 on Linux
因此您可能需要下载 cx_Oracle 源代码并自行构建它们。 (因此,您将需要 Python 和 Oracle 客户端 header 。)
或者,您可以尝试为 Oracle 9i 构建 cx_Oracle。这听起来有点狡猾,但显然应该有效。
关于 python 和甲骨文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1796198/