linux環境下使用python連接Oracle需要使用cx-Oracle和instantclient。
外網環境直接
pip install cx_Oracle
內網環境
去官網上下載wheel文件,導入內網環境後install
import cx_Oracle
conn = cx_Oracle.connect(rkcx_zhanghao/[email protected]:31521/rkqry)
直接運行會報錯
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: " libclntsh.so: cannot open shared object file: No such file or directory".
是因為環境變量配置不正確,導致libclntsh.so這個文件沒有找到
Oracle官網
檢查Oracle數據庫的版本以及系統類型下載相應的文件!!!
我的oracle是11.2.0版本的對應下載壓縮包:
instantclient-basic-linux.x64-11.2.0.4.0.zip
linux環境客戶端需要依賴 libaio yum install libaio
然後新建一個文件夾
mkdir -p /home/test/oracle
壓縮包移過去後,解壓
unzip instantclient-basic-linux.x64-11.2.0.4.0.zip
解壓完成後,生成新生成的文件夾 instantclient_11_2
新增環境配置,在用戶路徑下 ls -a 查看 .bash_profile文件。
系統配置為
[[email protected]_191 ~]# vim /etc/.bash_profile
只為當前用戶配置為
[[email protected]_191 ~]# vim /home/test/.bash_profile
打開文件後
在~/.bash_profile文件末尾加入以下內容
export LD_LIBRARY_PATH=/home/test/oracle/instantclient_11_2:$LD_LIBRARY_PATH
如果python輸出字符串亂碼或報錯,在~/.bash_profile後添加
export LC_ALL='en_US.UTF-8'
編輯完成後,激活配置的文件
[[email protected]_191 ~]source /home/test/.bash_profile
然後可以查看剛剛配置的環境路徑是否正確
[[email protected]_191 ~]echo $LD_LIBRARY_PATH
參考網址