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