macOS搭建Python的cx_Oracle开发环境的过程总结。

环境与版本

OS: macOS High Sierra 10.13.6

Oracle Instant Client: Version 12.2.0.1.0 (64-bit) Updated 15-Jan-2018

安装Oracle Instant Client

Oracle网站的下载需要注册一个账户,根据macOS版本选择Oracle Instant Client,自行申请下载。

https://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

下载所需要的文件,

basic: instantclient-basic-macos.x64-12.2.0.1.0-2.zip

sqlplus: instantclient-sqlplus-macos.x64-12.2.0.1.0-2.zip

sdk: instantclient-sdk-macos.x64-12.2.0.1.0-2.zip

解压包到一个文件夹里,如/usr/local/lib/Oracle/instantclient_12_2

unzip instantclient-basic-macos.x64-12.2.0.1.0-2.zip # 提供基本功能
unzip instantclient-sqlplus-macos.x64-12.2.0.1.0-2.zip # 提供sqlplus命令行
unzip instantclient-sdk-macos.x64-12.2.0.1.0-2.zip # 提供头文件,cx_Oracle会依赖其中的oci.h

链接库文件

添加到$HOME/lib/usr/local/lib的链接,以使应用程序能够找到库。

ln -s /usr/local/lib/Oracle/instantclient_12_2/libclntsh.dylib.12.1 /usr/local/lib

如果您打算将可选的Oracle配置文件(如tnsnames.ora,sqlnet.ora或oraaccess.xml)与Instant Client放在一起,则创建一个network/admin子目录(如果该子目录不存在)。

mkdir -p /usr/local/lib/Oracle/instantclient_12_2/network/admin

增加环境变量

export PATH=/usr/local/lib/Oracle/instantclient_12_2:$PATH # sqlplus工具也可以使用了

安装cx_Oracle

pip install cx_Oracle

验证

>>> import cx_Oracle
>>> db = cx_Oracle.connect('hr', 'hrpwd', 'localhost:1521/XE')
>>> db1 = cx_Oracle.connect('hr/hrpwd@localhost:1521/XE')
>>> dsn_tns = cx_Oracle.makedsn('localhost', 1521, 'XE')
>>> print(dsn_tns)
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SID=XE)))
>>> db2 = cx_Oracle.connect('hr', 'hrpwd', dsn_tns)

参考文档:

https://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

https://oracle.github.io/odpi/doc/installation.html#macos

02-17 21:59