安装 cx-Oracle

目前有需要使用Oracle数据库中的数据,但平常接触较少,目前系统居于MySql的,为了使用方便统一,所以需要通过编写脚本,实现将Oracle中的数据同步到Mysql数据库中。借助Python语言,通过cx-Oracle连接数据库。

平常的开发在Windows环境中,系统运行环境在Ubuntu中,所以2个环境下都安装了cx-Oracle。记录一下安装的过程,安装基于Python2.7 + Oracle 11g客户端,OS是Windows10 64位、Ubuntu16.04。

首先安装配置时,必须把握一个点,就是版本一致! 包括:系统版本,Python版本,Oracle客户端的版本,cx_Oracle的版本,然后安装配置就容易了!

目前运行的各版本如下:

Python版本:Python2.7 32bit;

cx_Oracle的版本:cx_Oracle-5.3-11g.win32-py2.7

oracle客户端的版本:instantclient_18_5_32bit;

Windows环境

  • 下载地址:https://pypi.python.org/pypi/cx_Oracle/5.3 下载低版本cx_Oracle版本,我是下载cx_Oracle-5.3-11g.win32-py2.7,下载后直接双击安装,就ok了。

不建议直接使用pip install cx_Oracle命令安装,因为安装的很有可能是最新版本,容易引起版本兼容问题。

  • 下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html, 将instantclient目录下的所有*.dll文件拷贝到Python27\Lib\site-packages目录下

全部拷贝可以解决cx_Oracle连接Oracle数据库的时候报错:cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle

  • 测试
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import cx_Oracle 
conn = cx_Oracle.connect('用户名/密码@主机ip地址/orcl') 
curs=conn.cursor()
sql="select * from Table where ..." 
rr=curs.execute (sql)
row=curs.fetchone()
print(row[0])
curs.close()
conn.close()

Ubuntu环境

  • 下载链接:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html, 下载 instantclient-sdk-linux.x64-11.2.0.4.0.zip和instantclient-basic-linux.x64-11.2.0.4.0.zip,解压后放到同一个文件夹下,命名为 instantclient_11_2
  • 执行一下命令行

    export ORACLE_HOME=/path-to_this/instantclient_11_2

    cd $ORACLE_HOME

    ln -s libclntsh.so.11.1 libclntsh.so

  • 打开/etc/profile 文件,添加下面2行

    export ORACLE_HOME=/location/of/your/files/instantclient_11_2

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

  • 使修改生效

    source /etc/profile

  • 遵循python版本,使用pip安装

    pip install cx_Oracle

  • 在python中引用,如下截图显示,则说明安装成功 Python中引用cx_Oracle

本文作者:肖云

本文链接:http://www.d7dd.com/2019/3/cx-Oracle

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!

ubuntu 16.04下安装openssl
0 条评论
已登录,注销 取消