公司的数据库版本比较老,本人客户端安装的是32位的Oracle 10.2。入门python以来一直因为cx_Oracle、python、Oracle三者之间的版本而折磨致死,终于总结出办法现整理如下:
最终版本列表:
python 3.6.8(32bit)
cx_Oracle 7.0.0(32bit)
Oracle Client 10.2(32bit)
windows 10(64bit)
python 3.6.8
官方下载地址即可:
python-3.6.8.exe
直接安装,记得卸载之前安装的版本,卸载请使用即将卸载的版本的exe安装文件进行uninstall,例如卸载3.7.3可下载3.7.3对应的exe安装文件,通过此文件进行卸载。
cx_Oracle 7.0.0
在pypi上进行下载,或自行搜索相同whl:
cx_Oracle-7.0.0-cp36-cp36m-win32.whl
下载后直接使用pip install cx_Oracle-7.0.0-cp36-cp36m-win32.whl
进行安装即可。
Oracle 11.2
此时执行数据库连接仍会版本报错,可以在Oracle官网下载11_2文件夹,通过指引path路径加载即时path的方法加载11.2的客户端。
首先下载11_2的文件夹,此处需下载32bit版本:
microsoft-windows-32-downloads
下拉找到Instant Client Package - Basic,下载并解压
期间需要登录Oracle账号
MacOS(Big Sur 11.3.1)
安装全程以root用户身份进行
sudo su
首先创建oracle文件夹,之后下载的文件需移动到这个文件夹里进行处理。
mkdir /opt/oracle/
python 3.6.8
官方地址下载直接安装:
macOS 64-bit installer
cx_Oracle 7.0.0
官方地址下载tar文件:
cx_Oracle-7.0.0.tar.gz
# 进入下载文件夹移动zip文件到oracle文件夹
mv cx_Oracle-7.0.0.tar.gz /opt/oracle/
# 释放文件
tar -xzvf cx_Oracle-7.0.0.tar.gz
cd cx_Oracle-7.0.0
# 构建文件
python3 setup.py build
# 开始安装
python3 setup.py install
Oracle 11.2
访问Oracle官网(需登录账号),下载instantclient-basic-macos.x64-11.2.0.4.0.zip
(64-bit)
# 进入下载文件夹移动zip文件到oracle文件夹
mv instantclient-basic-macos.x64-11.2.0.4.0.zip /opt/oracle/
# 解压文件
unzip instantclient-basic-macos.x64-11.2.0.4.0.zip
# 新建lib文件夹
mkdir ~/lib
# 链接所有的文件到lib文件夹
ln -s /opt/oracle/instantclient_11_2/ ~/lib/
测试连接
python3
>>> import cx_Oracle
>>> cx_Oracle.connect('username/pwd@url:1521/server')
# 返回以下格式消息则成功
<cx_Oracle.Connection to username@url:1521/server>
开始
代码开头定义path的os变量写入刚刚11_2解压的路径:
# 使用即时客户端避免版本不兼容
os.environ['path']='D:\Program Files\instantclient_11_2'
db=cx_Oracle.connect('username/pwd@url:1521/server')
print("oracle版本:", db.version)
搞定。