macOS下Python3使用cx_Oracle連接Oracle數據庫失敗

Python連接Oracle失敗

#1 環境

macOS 10.15.5 Catalina
Oracle for docker (oracleinanutshell/oracle-xe-11g)
Python 3.8.1 (要確保Python是64bit的)

#2 問題

  • 在Docker中使用Oracle容器
  • 在本地電腦沒有安裝Oracle客戶端,導致Python連接Oracle失敗

報錯信息 :

sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 1): image not found". See https://oracle.github.io/odpi/doc/installation.html#macos for help
(Background on this error at: http://sqlalche.me/e/4xp6)

在這裏插入圖片描述

#3 解決

#3.1 下載客戶端插件

https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html#ic_osx_inst

下載以下兩個版本的客戶端

  • instantclient-basic-macos.x64-19.3.0.0.0dbru.zip
  • instantclient-basic-macos.x64-11.2.0.4.0.zip

說明 : 因爲我用的是Mac, 在安裝過程中, 發現僅僅安裝19.3版本的並不能解決問題,還需要安裝11.2版本的客戶端, 其他系統暫時沒用嘗試過

#3.2 安裝

  • 解壓文件

我這裏試講文件解壓在 ~/instantclient_19_3 目錄下

unzip instantclient-basic-macos.x64-19.3.0.0.0dbru.zip
unzip instantclient-basic-macos.x64-11.2.0.4.0.zip

#3.3 設置軟連接

mkdir ~/lib
ln -s ~/instantclient_19_3/libclntsh.dylib ~/lib/
cp ~/instantclient_19_3/instantclient_11_2/{libclntsh.dylib.11.1,libnnz11.dylib,libociei.dylib} ~/lib/

#4 完成

在這裏插入圖片描述


在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章