博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu16安装cx_Oracle
阅读量:5234 次
发布时间:2019-06-14

本文共 2243 字,大约阅读时间需要 7 分钟。

最近想用python3写点自动化测试的东西,要连接oracle数据库,google了一番,发现目前cx_Oracle这个包比较好,恰好最近也添加了对python3.6的支持。

下面是我的安装之旅。

本机环境

  • OS: Ubuntu 16.04.2

  • python: Python 3.6.1

安装cx_Oracle

cx_Oracle is a Python extension module that enables access to Oracle Database and conforms to the Python database API specification. This module is currently built against Oracle Client 11.2, 12.1 and 12.2 and Python 2.7, 3.4, 3.5 and 3.6. For more information on the database API specification, see here.

安装命令:

python -m pip install cx_Oracle --pre

OK,安装成功,于是兴冲冲的我在SublimeText3敲下hello world:

import cx_Oracle# connect to oracleconn = cx_Oracle.connect('username/password@oracle-db-path')cursor = conn.cursor()cursor.execute("SELECT 1 FROM DUAL")rs = cursor.fetchone()print('result=%s' % rs)#close all resourcecursor.close()conn.close()

ctrl+b执行,果然报错:

ImportError: No module named cx_Oracle

一查,发现是没有安装oracle instant client导致的。接下来就是安装它。

安装Oracle Instant Client

官网上写着几个大字:新版本12.2发布啦!好嘛,用新不用旧可谓程序员的浪漫,就装他了!

下载以下几个包:

oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm

因为是rpm包,所以需要用alien工具安装,如果没装,那么:

sudo apt install alien

接下来用alien安装rpm包:

sudo alien -i oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpmsudo alien -i oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpmsudo alien -i oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm

安装完毕后,在安装目录建立network/admin目录

cd /usr/lib/oracle/12.2/client64sudo mkdir -p network/admin

修改/etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/oracle/12.2/client64/bin"ORACLE_HOME="/usr/lib/oracle/12.2/client64"OCI_LIB="$ORACLE_HOME/lib"TNS_ADMIN="$ORACLE_HOME/network/admin"

source一下,接下来修改动态连接库

echo "/usr/lib/oracle/12.2/client64/lib" | sudo tee /etc/ld.so.conf.d/oracle.conf sudo ldconfig -v

安装额外支持包

sudo apt-get install libaio1

测试:

sqlplus username/password@site

然而我失败了,倒不是因为安装问题,单纯只是因为目标数据库是9i版本的,而12.2已经不再支持这个版本的数据库了。

fuck!!!

既然到了这一步,还是继续往下走吧,因为python import还需要一点额外的工作:

$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.2/client64/lib python -c "import cx_Oracle; print(cx_Oracle.version)"

参考资料

转载于:https://www.cnblogs.com/alchimistin/p/7065861.html

你可能感兴趣的文章
性能测试总结(一)---基础理论篇
查看>>
前端程序员容易忽视的一些基础知识
查看>>
ISO日期格式标准,浏览器到服务器到mysql中的时区
查看>>
python 函数、装饰器、迭代器、生成器、列表生成式
查看>>
捕获JSON 解析错误
查看>>
java-类和重载笔记
查看>>
java中Date,SimpleDateFormat
查看>>
Swift学习Day005
查看>>
第九章笔记
查看>>
12558 - Egyptian Fractions (HARD version) (IDA* + 剪枝)
查看>>
Wireshark 文件分割和合并
查看>>
结对编程项目-四则运算 挑战出题
查看>>
数组是什么
查看>>
【MM自动记账】自动记账事务说明(转)
查看>>
MyBatis_SelectKey使用oracle 序列插入主键
查看>>
System.getproperty()能取到的值
查看>>
插值法(内插法)
查看>>
php 关于文件夹的一些封装好的函数
查看>>
Java并发--Java中的CAS操作和实现原理
查看>>
java1.8新特性整理(全)
查看>>