Python连接Oracle相对mysql等其它数据库会麻烦一些,需要增加Oracle_client libraries这层连接。 环境要保持:Python解析器、cx_oracle扩展模块、Oracle client三者使用的版本一致性。比如都是win64位程序 。
Oracle client使用精简版或者安装oracle的客户端即可,但是要注意所连接的兼容性,以下是我在网上找到的对应版本兼容矩阵。
找到对应支持版本就可以在官网下载具体对应的版本下载安装。精简版的版本不用安装,下载好后只需要添加相对应的环境系统变量和简单的配置即可。
client libraries也称之为instant client
Oracle Instant Client — 用于连接 Oracle 数据库的免费工具和库 | Oracle 中国
我这里要连接的数据库是Oracle 10G的版本,所以直接选择了一个支持的。
下载解压后
把目录下的dll文件复制到对应的python环境下对应的目录Lib\site-packages,复制后可以关闭pycharm重新启动检索相关文件。
在对应instant client 文件夹下新建文件夹network,在network下再建admin文件夹,里面新建文件tnsnames.ora文件目录结构如下图:
tnsnames.ora文件编辑内容如下:
LOCAL=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务器IP地址)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
配置环境变量
添加系统变量
变量名:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
变量名:TNS_ADMIN
变量值:E:\instantclient_12_1\network\admin
备注:这里是你解压的目录,
在Path下添加两项环境变量值
%ORACLE_HOME%
%ORACLE_HOME%\bin
到此可以在pycharm下测试了
import cx_Oracle
# 获取Oracle数据库版本信息
db_version = cx_Oracle.clientversion()
# 打印版本信息
print(f"Supported Oracle Database version: {db_version}")
出现下图标识已经成功连接