Python連接Oracle的一些坑以及出現原因和解決方法

前兩天公司需要, 我用Python通過Oracle客戶端instanceclient對接Oracle,遇到了一些問題:

提前一個小問題:

Python連接Oracle需要一個第三方庫:cx_Oracle 而這個庫直接pip3 install 安裝不了, 或者即使安裝上了,也會版本不對,所以這就需要去pipy官網上去下載與你的系統,python對應版本位數的cx_Oracle

下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/

因爲我的系統和Python都是64位,Python是3.6版本   所以下載紅色標記出來的這個版本, 下載到你的Python安裝包下面的Lib下面的site-pakeage(pakeage好像拼錯了, 無所謂), 接着在site-pakeage目錄下打開dos命令行, pip3 install cx_Oracle_7.3.0_cp36。。。.whl就能安裝上了

 

問題一:

cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "D:\pi_sql\pl_sql\instantclient_11_21\instantclient_11_2\oci.dll is not the correct architecture   

簡單來說就是: cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library:   oci.dll is not the correct architecture                       

原因:遇到這個問題, 沒別的原因, 就是你Oracle客戶端instanceclient, 系統, Python  三者版本位數不對應,我的原因是我係統和Python都是64位,而Oracle客戶端instanceclient別人給我的是32位, 所以怎麼着都不行, 後來又給我64位的客戶端 就行了   

解決方法: 把原來的instanceclient卸載了,選擇一個明確與你的系統, Python版本尾數相同的Oracle客戶端instanceclient, Python和系統版本好查看, instance客戶端不好查看

查看Python版本: 

查看系統版本:右擊計算機------->屬性   往下找:

 

我的系統和Python都是64位, 那就確定是客戶端instanceclient版本位數不對, 所以卸載原來的, 下一個明確是64位的instanceclient客戶端就好了

 

 

問題二:

Python 連接 Oracle 數據庫時報錯: 64-bit Oracle Client library cannot be loaded:

原因:是因爲你沒有配置環境變量, 將你instanceclient客戶端中oci.dll所在的目錄路徑添加到華寧變量path中就好了

我的路徑是這樣:

添加到環境變量path中就好

 

問題三:

cx_Oracle.DatabaseError: ORA-12560: TNS: 協議適配器錯誤

原因:你連接Oracle的時候, 沒有寫入用戶名密碼和端口

就像這樣, 就會報這個錯誤:

加上你的用戶名密碼端口就好了:

 

問題四:

cx_Oracle.DatabaseError: ORA-12170: TNS: 連接超時

原因:如果你是本地Oracle這樣, 這個網上一搜一大把解決辦法。而我的Oracle是在公司服務器上的, 所以需要公司的內網, 我連接超時的原因只是我忘了插公司的網線............

 

                                                                                 

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