使用Python連接Oracle數(shù)據(jù)庫(kù)的環(huán)境非常麻煩,尤其在window下的配置,默認(rèn)情況下需要安裝Oracle數(shù)據(jù)庫(kù)才行,對(duì)于不想在機(jī)器上安裝Oracle的用戶來(lái)講,安裝過(guò)程會(huì)出現(xiàn)各種問(wèn)題。最常見(jiàn)的如下:
成都創(chuàng)新互聯(lián)公司于2013年開(kāi)始,先為靖州等服務(wù)建站,靖州等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為靖州企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
安裝出錯(cuò):distutils.errors.DistutilsSetupError: cannot locate Oracle include files in……
運(yùn)行出錯(cuò):cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle……
從網(wǎng)絡(luò)查找了很多資料,方法基本類似,但是有誤導(dǎo)的地方,所以,刻意實(shí)驗(yàn)并記錄一下,以便日后參考,并希望能夠幫到遇到類似問(wèn)題的朋友。此次安裝環(huán)境為Window 10 64bit+Miniconda3-latest-Windows-x86_64.exe+instantclient-basic-windows.x64-11.2.0.4.0.zip,其他環(huán)境,比如python2.7、python3.5及其他版本windows操作系統(tǒng)和instantclient-basic-windows.x64-12.1.0.2.0.zip也可以參考解決。
解決步驟:
下載cx_Oracle的.exe文件。
在windows下使用easy_install或者pip會(huì)出現(xiàn)報(bào)錯(cuò):distutils.errors.DistutilsSetupError: cannot locate Oracle include files in...,所以,需要使用.exe文件進(jìn)行安裝。打開(kāi)網(wǎng)址https://pypi.python.org/pypi/cx_Oracle,在頁(yè)面選擇適合自己操作系統(tǒng)、Python版本、Oracle版本的鏈接下載即可。
下載Oracle Instant Client
? 從 Oracle官方網(wǎng)站(一定是在英文網(wǎng)站進(jìn)行下載,中文網(wǎng)站更新較慢,最新版本為11.2.0.3.0,且下載速度超慢)下載Oracle Instant Client for Microsoft Windows(x64),在這里下載的是11.2.0.4.0版本的,其他版本沒(méi)有嘗試。 下載解壓到目標(biāo)文件夾,本次解壓到D:\software\Oracle\instantclient_11_2
中,并將該路徑添加到系統(tǒng)的環(huán)境變量,命名為ORACLE_HOME,將ORACLE_HOME添加到path下,否則會(huì)報(bào)錯(cuò) cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle,本例中為:ORACLE_HOME=D:\software\Oracle\instantclient_11_2上述步驟完成之后,重新進(jìn)入Python交互環(huán)境,然后使用下面的代碼進(jìn)行測(cè)試:
>>> import cx_Oracle>>> db=cx_Oracle.connect('rhin/rhin@10.100.101.40/imis')>>> print(db.version)11.2.0.1.0>>>
至此,整個(gè)過(guò)程完成。注意,不需要再本機(jī)上安裝Oracle,也不需要新建NETWORK/ADMIN目錄添加tnsnames.ora文件,更不要把oci.dll移到site-packages。 整個(gè)過(guò)程主要參考 淡水的天空|Python cx_Oracle 安裝小記 ,在此表示感謝。本文章內(nèi)容應(yīng)該也可以解決Linux不安裝Oracle使用SQLAlchemy的問(wèn)題,但沒(méi)有進(jìn)行相應(yīng)的驗(yàn)證。