【问题标题】:Connect python to oracle将python连接到oracle
【发布时间】:2012-01-06 04:25:05
【问题描述】:

我已经安装了 oracle client 和 oracle client-dev,并设置了 ORACLE_HOME 环境变量。然而,当我尝试安装 tux_oracle(python setup.py build)时,我得到以下信息: 致命错误:oci.h:没有这样的文件或目录

【问题讨论】:

    标签: python oracle cx-oracle


    【解决方案1】:

    我正在使用cx_oracle 连接到我的 Oracle 数据库。你试过了吗?

    【讨论】:

      【解决方案2】:

      该头文件可以在开发套件中找到。出于某种原因,它不包含在默认分发包中。来看看

      http://my.opera.com/onyxluo/blog/cannot-find-oci-h-in-oracle9-2-client

      这是页面内容,为您提供方便。我从 Google 缓存中获取它,因为我到达那里时页面已关闭。

      这个问题的原因是因为OCI(Oracle Call 接口)包没有安装在Oracle9.2客户端。默认 “oci.h”的路径是 $ORACLE_HOME/rdbms/demo。这个问题不存在 在 Oracle 数据库 9.2.0.1 上。但对于 Oracle 9.2.0.1 客户端,OCI 包 即使您选择完整的套餐也不包含在客户端中 客户端安装。

      解决方案:

      1. 先安装 Oracle 9.2.0.1 客户端。
      2. 在 OUI(Oracle Universal Installer) 中,使用与 Oracle 9.2.0.1 客户端相同的 oracle home,然后选择 Oracle Database install。
      3. 在数据库安装中选择自定义
      4. 取消选中 Enterprise Manager 和 Oracle 数据库以及 OCI 和 OCCI 以外的其他选项。

      安装 OCI 后,$ORACLE_HOME/rdbms/demo 将包含 oci.h 和 其他 *.h 文件。

      【讨论】:

        【解决方案3】:

        嗯,答案是安装 cx_Oracle 而不是 tx_Oracle。在 Ubuntu 中执行此操作的方法如下:

        1. 您的 PC 中必须安装 oracle 客户端。如果不是从 oracle http://www.oracle.com/technetwork/topics/linuxsoft-082809.html 下载。
        2. 在您的 PC 中安装外星人,以便能够将 rpm 转换为 deb:
        sudo apt-get -i 外星人
        1. 将 rpm 转换为 deb:
        sudo alien -d oracle-instantclient11.2-sqlplus-11.2.0.2.0.i386.rpm
        1. 安装
          sudo dpkg -i oracle-instantclient11.2-basic_11.2.0.2.0-2_i386.deb
        2. 通过创建一个文件 oracle.sh 来设置 /etc/profile.d 中的 ORACLE_HOME 环境变量,该文件必须包含:
        导出 ORACLE_HOME=/usr/lib/oracle/11.2/client
        源码 oracle.sh
        1. 更新 LD_LIBRARY_PATH:
        sudo vi /etc/ld.so.conf.d/oracle.conf 其中必须包含:
        "$ORACLE_HOME/lib"
        sudo ldconfig
        1. http://cx-oracle.sourceforge.net/ 下载并安装 cx_Oracle(取决于您使用的 oracle 和 python 的版本) 再次使用外星人将 rpm 转换为 deb 并安装:
        须藤外星人-d cx_Oracle-5.1-11g-py32-1.i386.rpm
        sudo dpkg -i cx-oracle_5.1-2_i386.deb
        1. cx_Oracle 安装在 /usr/lib/python2.7/dist-packages/ 中。你必须这样做: sudo mv site-packages/cx_Oracle* dist-packages/ sudo rmdir 站点包/ sudo ln -s dist-packages 站点包

        现在您连接到 oracle 应该没有问题了。 来自python类型:

        导入 cx_Oracle

        要连接到数据库,请在 tsnames.ora 中指定连接字符串或直接:

        connection_string = '用户名/密码@(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA= (SID=MY_SID)))'

        【讨论】:

        • 是否在 x64 python/os 上安装类似的 cx_oracle?
        猜你喜欢
        • 1970-01-01
        • 2019-03-27
        • 2020-10-30
        • 2019-12-26
        • 2016-07-27
        • 2010-12-10
        • 2021-02-10
        • 2020-04-08
        • 2015-12-26
        相关资源
        最近更新 更多