Python连接Oracle数据库
环境说明(保持各个关联环境版本对应非常重要):
系统环境:win10 64位
数据库版本:Oracle 11G 64位
python版本:python 3.7.8 64位
操作步骤
1、安装databaselibrary 库
pip安装,具体安装略
2、安装oracle 客户端
下载oracle客户端需和oracle版本对应
根据本地环境下载的是instantclient-basic-windows.x64-11.2.0.4.0.zip
下载 instant client,地址如下:
将客户端解压到python根目录,然后添加环境变量(即将客户端文件路径添加到path中,注意末尾加分号)
a: NLS_LANG 值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 为了防止中文乱码
b: ORACLE_HOME 值:C:\Program Files\Python37\instantclient_11_2 ORACLE_HOME下则是ORACLE的命令、连接库、安装助手、listener等等一系列的东东,其实配置这个变量是为了在path中去%ORACLE_HOME%使用,如果没有这个变量也可以,
c: TNS_ADMIN 值:C:\Program Files\Python37\instantclient_11_2\NETWORK\ADMIN
d: path 值:C:\Program Files\Python37\instantclient_11_2 为了在哪里都能找到可执行的Oracle客户端下面的可执行程序path 图示
添加tnsnames.ora文件
下载地址: https://pan.baidu.com/s/1niTEjK6NbKk5aGGH3cm4eA 提取码: u5u7
3、安装cx_oracle
cx_oracle是一个用来连接并操作Oracle数据库的python扩展模块,支持报错oracle9.2 10.2 11等版本
下载地址:cx-Oracle · PyPIhttps://pypi.org/project/cx-Oracle/
根据实际下载对应系统、python版本的文件,我下载的是cx_Oracle-8.0.1-cp37-cp37m-win_amd64.whl
将下载的.whl文件放于python的Scripts文件
cmd-将目录切换到python的Scripts文件下,输入pip install cx_Oracle-8.0.1-cp37-cp37m-win_amd64.whl
到此,基本环境安装好了,接下来验证是否可用正常连接oracle数据库
import cx_Oracle
conn = cx_Oracle.connect('zxx/xxl@192.167.10.86:1521/abc')
curs = conn.cursor()
sql = 'select * from product_component_version'
curs.execute(sql)
for result in curs:
print(result)
curs.close()
conn.close()
如果在虚拟环境中需要使用,只需要安装 pip install ==8.0.1 cx-Oracle 就可以了,需要指定版本,否则会出问题:尽量不要直接使用pip install cx_Oracle,这样默认安装的是最新版本的cx_Oracle,可能会出现以下错误
1.1 cx_Oracle 报错:cx_Oracle.DatabaseError: DPI-1050: Oracle Client library must be at version 11.2
解决方法:从 https://pypi.python.org/pypi/cx_Oracle/5.3 下载低版本cx_Oracle版本 可以下载cx_Oracle-5.3-11g.win-amd64-py3.6-2.exe ,然后直接安装
备注,下边这一步,没有做也能正常连接,不知道有什么用处: