离线环境用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

原文地址:https://www.cnblogs.com/lxgbky/p/13602398.html