1.環境介紹
windows10
開發環境1:python 64位 anaconda3.7.3 with cx_oracle 7.2.3
開發環境2:python 32位 3.6.5 with cx_oracle 5.3
oracle 32位客戶端11g
oracle 64位服務端11g
本文記錄着我那找為坑而逝去的青春。如果搜到我的文章想直接找解決方案請到3.結論里復制代碼即可。
2.問題排查
在使用 開發環境1 開發的時候連接sqlalchemy報錯,提示ora-01804,搜索后沒有找到相關的結果。
然后想起還有 開發環境2 曾經用過的cx_oracle模塊,一嘗試發現果然是環境引起的異常。
然后把cx_oracle從7.2.3降級到5.3提示版本有問題。只好把cx_oracle重新升級到6.1 。
還是提示連接不了,這一次換個報錯了:大致英文含義為cx_oracle環境異常。
這一次百度可以搜到提示了:添加環境變量指向Oracle_home.
根據百度的結果進行了環境變量的設置終於可以連接了.
但是查詢的中文居然以???????顯示。這次很容易就百度出來了,感覺萬能的網友。
3.結論
#為了使oracle連接正常,請保證python的位數和oracle_home指向的客戶端或服務端位數一致
os.environ["ORACLE_HOME"] = r'D:\app\me\product\11.2.0\dbhome_3'
#為了使字符集正常,請在NLS_LANG設置和服務端一致的字符集(不行就多試幾個,總會套上)
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'