zoukankan      html  css  js  c++  java
  • 离线环境用python连接asianux4.5上的oracle11g

    环境asinnux4.5 ,相当于centos6.x或redhat6.x

    oracle11g, python3.6.8

    下载了3个软件,软件版本的匹配时关键。 64位的。

     oracle客户端工具。 oracle-instantclient向下兼容,也就是 12.2或更高版本,能够连接oracle11g的server。

    问题:

    1: 我为什么用instantclient12.2而不用instantclient11, 是因为 cx-oracle6.x ,只能搭配instantclient12.2以上。 亲测过。

    2: python-cx_oracle与cx_oracle可能重了,但也没办法,因为我的python环境用了virtualenv隔离。rpm没法装在我的隔离环境,pip xxx.whl可以装在隔离环境。

    安装过程:

    一、

    1、打开shell终端

    rpm   -ivh   oracle-instantclient12.2xxxxx

    rpm   -ivh   python-cx_oracle-xxxx

    2、进入python我自己的运行环境virtualenv

    (py368) [root@localhost py368]# pip install cx_Oracle6.1xxxx .whl
    安装cx_oracle

    3、测试cx_oracle是否成功

    python>> import cx_Oracle

    不报错就成功

    二、设置

    1、设置lib路径

     vim /etc/profile

    增加如下两行

    export ORACLE_HOME=/usr/lib/oracle/12.2/client64/lib
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

    使修改生效

    #activate /etc/profile

    2、解决xc_Oracle的 dpi-1047问题, load libclntsh.so

    (py368) [root@localhost py368]# vim /etc/ld.so.conf
    (py368) [root@localhost py368]#


     插入一行: 

    /usr/lib/oracle/12.2/client64/lib

    修改完后,执行ldconfig,使修改生效

    (py368) [root@localhost py368]# ldconfig

    测试确认

    测试代码:test.py

    import cx_Oracle as db 
    import os 
    os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' 
    
    def queryOracle(sql):
        username = "cjxs"
        passwd = "Tgds_901"
        host = "172.18.35.200"
        port = "1521"
        sid = "jcqzdb"
        dsn = db.makedsn(host, port, service_name=sid)
        con = db.connect(user=username, password=passwd,dsn= dsn)
        cur = con.cursor()
        cur.execute(sql)
        result  = cur.fetchall()
        cur.close()
        con.close()
        return (result)
    
    
    if __name__=="__main__":
        sql = "select * from qzk_cjxs.test" #dual
        rows = queryOracle(sql)
        for row in rows:    
          print (row[0],row[1])
       

    测试成功:

     自己在代码里面写dsn, 就不用去 instantClient中设置 tnsnames.ora的相关连接字符串了。非常方便。

     测试成功, 不确定性是造成焦虑的主要原因,自己做一遍,测通了,以后就好了。

    相关安装包,保存到自己的百度网盘   python3.6_asinnux4.5_oracle11g软件包

    参考并下载软件的网站如下:

    https://blog.karky7.com/2017/04/gentoodjangooracle-database-11g.html

    https://oracle.github.io/odpi/doc/installation.html#linux 

    https://blogs.oracle.com/linux/cx_oracle-rpms-have-landed-on-oracle-linux-yum-server

    https://www.yamamanx.com/centos-6-python-oracle/#Oracle_Instant_Client%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

    https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

  • 相关阅读:
    作业三3
    作业三2(改过)
    第一章
    实验2
    第三章
    例2-11
    例2-10
    例2-8
    例2-9
    例2-7
  • 原文地址:https://www.cnblogs.com/lxgbky/p/13602398.html
Copyright © 2011-2022 走看看