1.问题
手上有一个数据很齐备的oracle10G的数据库,使用python安装cx_Oracle读取一直有DLL或者其他问题,无奈环境都是win平台,总不能为了一个读取切换系统啊。闲置好久,时不时使用c#来做点事情。
难道就不能彻底解决cx_Oracle在windows下的使用问题么?再次花了一个周六搜遍了所有中文贴,加上自己的实验终于找到一个肯定能解决问题的方法。但是还没理解原因,请实践者按我的步骤操作。
2.环境和准备
- activepython 2.7
- windows 2003或xp或其他
- oracle10G的客户端程序
- web.py
- cxOracle包 目前最新是5.1.2 注意是for 10G的 http://downloads.sourceforge.net/project/cx-oracle/5.1.2/cxOracle-5.1.2-10g.win32-py3.2.msi?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fcx-oracle%2Ffiles%2F5.1.2%2F&ts=1363041549&use_mirror=nchc
下面就是重点了请按步骤操作。
我事先假定已经安装好activepython、10G客户端并且配置好了一个oracle10的数据库。 python安装在C盘的python27目录中; 我假定你的oracle客户端安装在D盘,一般目录结构是D:\oracle\product\10.2.0\client_1,
- oracle客户端的bin目录中的oci.dll复制到C:\python27\目录。注意不是lib\site-packages;
- 将D:\oracle\product\10.2.0\client_1\bin加入windows系统的path里(我的电脑、右键、属性、高级、环境变量、点中path点编辑,加完确定)
- 使用默认配置安装cx_Oracle for 10g的msi包
- bingo
3.一些问题的解决
不是按这个步骤配置的,可能回出现一些问题,总结如下
- 找不到DLL的问题,原因是oci.dll没有复制或没放对地方,网上查来的资料说法不一,我告诉你放到python根目录非常好用;
- ORA-24315 问题,原因是你使用的是pypm install cxOracle安装的cx包,或者下错了cxoracle的版本,估计下了11g的或其他的,卸载已经安装好的cx_oracle包(没办法的话就搜索删除),重新安装一下正确的msi包就好了;
- 还有能import cx_Oracle但连接时出现其他7788的问题,这就是环境问题了,把oracle客户端的bin目录设置入path一般都能解决
-
能连接了,发现中文乱码,可以在程序头部使用解决
import os
os.environ['NLSLANG'] = 'SIMPLIFIED CHINESECHINA.UTF8'
4.收工
以上是自己在windows下配置cx_Oracle的一些经验总结,记录留存分享。网上搜来的都是转载的多,大多没亲自实验过,希望我的总结能让有同样问题的人一站到位,少些弯路。