pydev 访问oracle数据库的一点总结

来源:互联网 发布:淘宝自动发货网址 编辑:程序博客网 时间:2024/05/21 19:42

环境:xp sp3 + eclipse + pydev 2.2 + python 3.2 + oracle 10g 客户端 + cx_Oracle-5.1.1-10g


假定你的pydev环境已经配置好,没有的话网上一大把的:先装python,再装JDK-SE,eclipse解压就可以用,pydev解压后拷贝到eclipse\dropins目录下即可使用....如何建工程,我就不说了。

现在开始装cx_Oracle,在windows下是个安装包,直接运行,一切默认,它会自己查找你的python装在哪里了,cx_Oracle也应该装在那个目录下,你不要做任何更改,一路NEXT就行了,如果出错了,可能你的cx_Oracle版本有问题,版本得匹配才行。

然后安装oracle客户端,这里你只需要安装instantclient 就可以了,


安装完成后,查找一下里面的oci.dll, oraociei10.dll这两个文件,将它们拷贝到C:\Python32\Lib\site-packages目录下,你如果不是装在这个目录下请作对应修改。没有这个文件运行的时候会找不到dll.


接下来配置环境变量,主要是系统变量:

添加 变量名ORACLE_HOME=F:\Oracle\ora92;//请改成你对应的目录

在Path的最前面添加F:\Oracle\ora92\bin;//请改成你对应的目录,

我本来装的是9i,但是cx_Oracle没有支持9i的模块,我就装了10g版本的cx_Oracle,这样一来,必须装10g的客户端,幸运的是只要装instantclient 就可以了,当你装完这个instantclient,你发现安装目录下并没有bin目录,你只有装了完整的客户端才有,不要要紧,就用9i的就行了。


你时候在你的python自带的解释器里输入

import cx_Oracle

db = cx_Oracle.connect(user='RSES',password='RSES',dsn='127.0.0.1:1521/RSES')
print(db.version)
db.close

应该能够成功,但在pydev中却不行,嘿嘿,你需要像这样做:

import os
import cx_Oracle
os.environ['ORACLE_HOME'] = 'C:/oracle/product/10.2.0/client_1'        //请改成你对应的目录
os.environ['LD_LIBRARY_PATH'] = 'C:/oracle/product/10.2.0/client_1/LIB'      //请改成你对应的目录

db = cx_Oracle.connect(user='RSES',password='RSES',dsn='127.0.0.1:1521/RSES')//我的用户名,密码和服务名都是RSES,你的请作对应修改。
print(db.version)
db.close


出现 ORA-12705: Cannot access NLS data files or invalid environment specified 错误。修改如下:

如果是Windows平台,注册表里 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 查找键 NLS_LANG,这个键由Oracle标准客户端安装创建, 值是 NA 。这个导致了 ORA-12705错误。解决方法就是修改NA为SIMPLIFIED CHINESE_CHINA.ZHS16GBK


据说是pydev不能引用到系统变量,即你上面设置的系统变量对pydev像不存在一样,所以要自己在代码里面设置环境变量。这可不是我发明的,在老外论坛上看的。老外就是老外,牛啊。

弄了一天,终于可以了,哈哈。。。。

注意,今天发现os.environ中的设置不是必须的,上次可能是系统环境变量没有设置好的原因吧,看来很多东西,第一次成功也许只是偶然,一定要找到关键。