在python连接oracle数据库时走了不少弯路,主要是版本问题。下面记录一下安装时遇到的版本问题

pthon连接oracle需要先引入cx_Oracle模块

1.从官网下载https://pypi.python.org/pypi/cx_Oracle 下载了一个7.0.0版本的安装成功后, 在python环境下输入import cx_Oracle校验时发现报版本太高的错

 

2.又从官网下载了一个cx_Oracle-5.3-11g.win32-py2.7.exe版本,发现还是报ORA-24315 --版本不一致

通过百度发现python版本位数 与cx_Oracle版本位数 与oracle客户端版本位数 都要想一致。

  我的python版本2.7,32bit

  oracle是从oracle官网下载的http://www.oracle.com/technetwork/topics/winsoft-085727.html   instantclient-basic-win32-10.2.0.5.zip  --32位10.2的

  cx_Oracle版本cx_Oracle-5.1.2-10g.win32-py2.7.msi  --32位for 10g py2.7的

上述都安装好后,进入oracle10g的目录,复制oci,oraocci11,oraociei11的3个DLL粘贴到你的python安装目录的Libs/site-packages文件夹下面

 

3.上面工作做完,已经确保了版本都一样,但是执行import cx_Oracle依然报ORA-24315 --版本不一致。

此时才发现我先后安装了3个版本的cx_Oracle,那么读取到的是不是就不是5.1.2-10g的版本了咧? 

从而我进入了cx_Oracle的安装目录 ,也就是python安装目录下的Lib\site-packages,删除了cx_Oracle.pyd及7.0.0及5.3-11g版本的记录,然后又重新打开cx_Oracle-5.1.2-10g.win32-py2.7.msi并安装

 

4.在python环境输入 

import cx_Oracle

conn=cx_Oracle.connect('username/password@host:port/SERVICE_NAME')

c=conn.cursor()               #获取cursor()

x=c.execute('select * from merch_merchant')  #使用cursor()操作查询

x.fetchone()                  #展示查询结果,fetchone函数是获得一行结果,fetchall函数是获得所有行结果。均为元组

c.close()                  #关闭cursor()

conn.close()                #关闭数据库连接

参考:https://www.cnblogs.com/Leo_wl/p/3288402.html

 

5.ok,总算连接成功,由此可见python除了大小写敏感,对版本要求也相当高。

它连接数据库应该调用的是本地的oracle客户端, 在整个过程中与oracle服务端的版本并没有关系。

另外网上提到的需要配置环境变量的,我并未配置,也连接成功了。

posted on 2018-11-19 14:43  慢乌龟  阅读(4012)  评论(0编辑  收藏  举报