前言
在寫一個腳本用於查詢Oracle數據做一些監控,最開始以為和mysql一樣簡單,結果弄了兩個小時沒弄好
主要遇到的問題
anaconda下載的依賴cx_Oracle不能在代碼里面引用
在conda環境下載了cx_Oracle依賴,結果在代碼中引用一直報紅線,並且運行代碼找不到cx_Oracle模塊
創建venv環境並使用pip3來下載依賴遇到的問題(這個可能只是我的電腦上會出現的問題)
在conda環境反復嘗試很多次之后,放棄了使用conda來下載依賴,轉而使用venv環境,並使用venv下面的pip3來下載
cx_Oracle,結果下載的時候報錯,報錯內容找不到了,我記得是缺少Microsoft Visual C++ Build Tools工具,因此網上找了
下載安裝即可
下載地址:
https://devblogs.microsoft.com/python/unable-to-find-vcvarsall-bat/
Oracle Client版本不對
連接Oracle比Mysql繁瑣之處就在這里,需要引用本地的Oracle客戶端,這個客戶端是Oracle官方提供的一個客戶端,我認為可以理解為一個
驅動包,在navicat for oracle的安裝包下面就有這個,也可以自行下載,需要注意的是下載正確版本的客戶端(主要是oracle client和python cx_Oracle依賴的版本要一致),最開始我下載的是64位
客戶端,然后就報錯:Python cx_Oracle error “DPI-1047: Cannot locate a 32-bit Oracle Client”
於是重新下載一個32位的客戶端,下載地址:
https://www.oracle.com/database/technologies/instant-client/microsoft-windows-32-downloads.html
參考文章
https://stackoverflow.com/questions/57250111/python-cx-oracle-error-dpi-1047-cannot-locate-a-32-bit-oracle-client
https://blog.csdn.net/bbhdeal/article/details/81144783