python安装cx_Oracle

cx_oralce的安装
前言:
由于要进行oracle大量数据的导出,本身erp系统在前台并不支持。肯定会超时,而直接用plsql dev进行导出到excel里,又会内存溢出,如果细分sql进行导出,又会浪费大量人力和时间。曾经进行用plsql dev导出600+m的数据,两天内只能干眼瞪,全部内存都给plsql dev来处理数据了。所以打算用python连接数据库,细分sql,写入csv来进行导出,而python要用到cx_oracle来处理oracle。网上虽然有教程,但是有各种问题。
环境:
os:windows7 64位
python:3.5.1 64位
ide:pycharm ce 2016.1.2
oracle:32位客户端完整版,64位客户端基础包。
(instantclient-base-windows.x64-12.1.0.2.0),oracle sdk,oci.lib
plsql dev:32位
visual studio 2012
重点难点:
由于cx_oracle并不是一个独立的包,而是利用oracle本身的oci.dll和visual studio来进行编译的,所以需要用到oracle和visual studio,(visual studio可以换成mingw来complie)
1.q:开始用exe安装,不知道为什么在本机没法用方式来安装,点击后没反应,放在dos里也没有反应
a:用cx_oracle源码来安装
由于在公司主要是用plsql来开发存储过程,用到plsql dev这个ide,这个只有32位,对应的oracle也是32位,装的是完全版本,所以自动设置oracle的环境变更了
2.q:进行python的标准安装,无法找到vcvarsall.bat.
a:
msc表示python对应vs编译的版本,安装了vs后,会有一个环境变量,如vs100comntools。如果不清楚v.1600对应的是vs100comntools,还是vs90comntools.可以无脑地添加90-150的vs90comntools。想知道vcvarsall.bat。有什么作用,建议学习一下platform sdk的编译原理,这里简明说明一下就是vs临时设置的环境变量,指定了编译器和连接器等信息。
3.q:设置vs90comntools后,python还是没有找到vcvarsall.bat?
a:当时用32位phthon+32位oracle+64位的windows7,配置上面的还是没有找到vcvarsall.bat,
后来重装了64位的python,就没有问题了,所以要用python+vs+os要一致是64位或32位。
4.q:vs没法找到oci.h?
a:下载oracle sdk放到oracle的安装包下的bin下面。
5.q:vs没法找到oci.lib?
a:下载oci.lib放到oracle的安装包下的oci.dll同一目录下。
6.q:安装成功后,import cx_oracle,然后运行,报dll load错误?
a:由于python是64位,oracle32位,当然会报错.在网上找了好久,得到的方法都不行。网上把64位的oci.dll放在c:python34libsite-packages下。不行。phthon仍然没有找到这个64位的oci.dll,把这个文件指定到环境变量也不行。后来把oracle下的oci.dll下的替换成64位的oci.dll。成功,但是plsql dev从此失败,所以还是不行。后来把oci.dll放在cx_oracl的文件包下,成功。plsql dev也没有异常。
如下:
所以得出结论,并不是放在site-packages下,而是cx_oracle.pyr的同目录下。
7.q:connect失败?tns没法识别?
a:当然就想会不会是同上面的方式一样,所以在xc_oracle.py的同目录下建了一个oracle的tns的文件。
到此,安装测试完毕,总结就是要安装两个oracle,plsql dev32位+oracle+32位,
python 64位+oracle 64位配合操作。后面操作数据库的事,就交给大家看api文档了。
有什么问题,大家可以留言,我知道定会回答你们。