阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu下Python通过SQLAlchemy库访问Oracle数据库

126次阅读
没有评论

共计 1737 个字符,预计需要花费 5 分钟才能阅读完成。

SQLAlchemy 并不是数据库驱动,Python 访问 Oracle 数据的驱动是 cx_Oracle,但是这个驱动依赖于 Oracle instant client。所以 python 如果想通过 SQLAlchemy 库访问 Oracle 数据库,那么需要先安装 Oracle instant client、再安装 cx_Oracle、最后安装 SQLAlchemy。
搞了一圈下来,发现这个过程比较繁琐,现在的资料有些老旧,写篇文档和大家分享下。

安装 Oracle instant client

去 Oracle 官网下载安装包

http://www.oracle.com/technet…
我看的时候已经是版本 12.1.0.2.0,同一个版本下有很多包,支持 cx_Oracle 需要下载下面两个包
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
简称 basic、devel 包
basic 包含有所有的 oracle client lib/bin 文件
devel 包含了 oracle client 外部接口的头文件

安装

Oracle 官方只提供了 RPM 包,我的操作系统是 Ubuntu,需要安装一个 alien 进行转换。
sudo install alien 就可以完成安装

用 alien 将 RPM 包转换成 DEB 包,

   sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm 
   sudo alien -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm 

然后安装 deb 包

   sudo dpkg -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.deb
   sudo dpkg -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.deb

basic 包安装成功后,在 /usr/lib/oracle/12.1/client64/ 目录拷贝了 lib、bin 库,devel 包安装后会 /usr/lib/oracle/12.1/client64/ 目录下拷贝 include 头文件。
但是,我在用 alien 转 devel RPM 包时失败了,后来我就把 RPM 包解压,发现 devel RPM 包里面就是一些 include 文件,把这些文件拷贝到 /usr/lib/oracle/12.1/client64/include 目录,也能正常工作。

安装包的作用是在指定目录下存放 bin、libinclude头文件这些东西,如果安装不了,可以自己解压执行。

设置环境变量

设置环境变量的目的是为了让其它程序能找到安装的 Oracle 库

   $ export ORACLE_HOME=/usr/lib/oracle/11.2/client64 
   $ export LD_LIBRARY_PATH=$ORACLE_HOME/lib

链接 oracle 库到系统目录

在 /etc/ld.so.conf.d 目录下创建 oracle.conf 文件,在文件里面指定 oracle 库的路径 /usr/lib/oracle/11.2/client64/lib
执行链接配置

   $ sudo ldconfig

安装 cx_Oracle

安装 libaio 包,libaio 是 Linux 下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高,oracle SQLPlus 库依赖它。

   sudo apt-get install libaio1

所有准备工作完成后,执行包安装命令就可以成功安装 cx_Oracle 了

   sudo apt-get install cx_Oracle

如果前期的准备工作没做好,会报各种安装失败,大家可以对照安装步骤,比对前面的操作是否正确。

安装 sqlalchemy

最后使用 sudo apt-get install sqlalchemy 就可以完成安装了

本文永久更新链接地址:http://www.linuxidc.com/Linux/2018-01/150670.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1737字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中