资讯专栏INFORMATION COLUMN

ubuntu下python通过sqlalchemy库访问oracle数据库

CoorChice / 684人阅读

摘要:并不是数据库驱动,访问数据的驱动是,但是这个驱动依赖于。所以如果想通过库访问数据库,那么需要先安装再安装最后安装。安装包的作用是在指定目录下存放头文件这些东西,如果安装不了,可以自己解压执行。

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、lib、include头文件这些东西,如果安装不了,可以自己解压执行。
设置环境变量

设置环境变量的目的是为了让其它程序能找到安装的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 就可以完成安装了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38046.html

相关文章

  • Python-解决Cx_Oracle查询时UnicodeDecodeError的问题

    摘要:我们需要注意的是只有在数据库服务器端与客户端的编码一致的情况下我们才能正常的显示非编码而在中默认会将查询的字符串强制将其转换为。而正常的情况应该指定其编码为中国而设定就是相当于修改上述的编码为。 近期在项目中,要对1张100多万条记录的表进行查询,然后进行一些数据的统计,但是在这个过程中,发现只查询出来几条数据就出现了UnicodeDecodeError了。 在这里,我们使用sqla...

    Lsnsh 评论0 收藏0
  • 基于 oracle 的 flask 项目(一)——配置项目

    摘要:一般印象,项目适合做一些短小精悍的项目,特别是与等数据库结合很是般配。生成报表,不同的查询结果生成不同的报表。配置从下载客户端,然后解压后放入自己指定的目录。指定数据库连接池的超时时间。 一般印象,flask 项目适合做一些短小精悍的项目,特别是与 sqlite、mysql 等数据库结合很是般配。但是在一些大公司,特别是一些金融行业等国企公司,还是以 oracle 居多,那么,这个小辣...

    xialong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<