在下载使用cx_Oracle的时候遇到一些坑,在此记录一下:
我电脑的情况:
1. 之前手动安装了python2.7,并未卸载
2. 安装了Anaconda(python3.5),作为我的python开发工具
3. 电脑上已经装好了oracle11g数据库
因此,由于我使用的是anaconda来开发,没有做其他特殊配置的情况下,编译运行环境应该是python3.5。
首先通过学习https://www.cnblogs.com/lansan0701/p/8039332.html,对要安装的cx_Oracle有了了解(oracle、python、cx_Oracle要保持版本一致),于是在https://pypi.python.org/pypi/cx_Oracle/5.3下载了cx_Oracle-5.3-11g.win-amd64-py3.5-2.exe,双击运行,报错:Python version 3.5 required, which was not found in the registry。因此怀疑是python的环境变量有问题,于是查看环境变量path,发现python2.7的环境变量在anaconda之前,因此我把anaconda的环境变量移动到python2.7之前,再次双击安装,还是报同样的错误,然后我又找到python3.5的安装目录,创建python3.5的环境变量,并移动到python2.7的环境变量之前,再次双击运行,还是报同样的错误。经过网上查询,发现可能原因是:python2.7是我手动安装的,而python3.5是安装anaconda的时候自动安装的,因此系统注册表中应该只记录了python2.7,而没有记录python3.5,网上提供了解决办法https://blog.csdn.net/longxj04/article/details/64922138,但我觉得太麻烦,再想想其他办法。
在之前查询资料时,我知道除了下载exe进行安装之外,还可以下载whl安装(https://blog.csdn.net/weixin_37674494/article/details/77069517),还可以执行conda install -c https://conda.anaconda.org/anaconda cx_oracle命令或pip install cx_Oracle命令进行安装。
由于没有找到合适版本的whl (https://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_oracle),我的数据库是11g,但里面只找到12c的5.3的cx_Oracle,因此暂时放弃;
我在Anaconda Prompt中执行了命令conda install -c https://conda.anaconda.org/anaconda cx_oracle,安装成功!(由于有环境变量,在cmd命令行应该也可以)
我想,pip install cx_Oracle命令应该也能搞得定,但由于要保持版本一致,所以执行命令前需要把python3.5的环境变量移动到python2.7之前,才能保证下载的cx_Oracle满足要求。
附带连接基础代码:
import pandas
import cx_Oracle as ora
conn = ora.connect('python/pythontest@localhost/orcl')
cursor = conn.cursor ()
cursor.execute('select code from test_houses')
rs=cursor.fetchall()
hadHouses=pandas.DataFrame(rs);
cursor.close ()
conn.close ()
hadHouses.columns = ['code']