在python連接oracle數據庫時走了不少彎路,主要是版本問題。下面記錄一下安裝時遇到的版本問題
pthon連接oracle需要先引入cx_Oracle模塊
1.從官網下載https://pypi.python.org/pypi/cx_Oracle 下載了一個7.0.0版本的安裝成功后, 在python環境下輸入import cx_Oracle校驗時發現報版本太高的錯
2.又從官網下載了一個cx_Oracle-5.3-11g.win32-py2.7.exe版本,發現還是報ORA-24315 --版本不一致
通過百度發現python版本位數 與cx_Oracle版本位數 與oracle客戶端版本位數 都要想一致。
我的python版本2.7,32bit
oracle是從oracle官網下載的http://www.oracle.com/technetwork/topics/winsoft-085727.html instantclient-basic-win32-10.2.0.5.zip --32位10.2的
cx_Oracle版本cx_Oracle-5.1.2-10g.win32-py2.7.msi --32位for 10g py2.7的
上述都安裝好后,進入oracle10g的目錄,復制oci,oraocci11,oraociei11的3個DLL粘貼到你的python安裝目錄的Libs/site-packages文件夾下面
3.上面工作做完,已經確保了版本都一樣,但是執行import cx_Oracle依然報ORA-24315 --版本不一致。
此時才發現我先后安裝了3個版本的cx_Oracle,那么讀取到的是不是就不是5.1.2-10g的版本了咧?
從而我進入了cx_Oracle的安裝目錄 ,也就是python安裝目錄下的Lib\site-packages,刪除了cx_Oracle.pyd及7.0.0及5.3-11g版本的記錄,然后又重新打開cx_Oracle-5.1.2-10g.win32-py2.7.msi並安裝
4.在python環境輸入
import cx_Oracle
conn=cx_Oracle.connect('username/password@host:port/SERVICE_NAME')
c=conn.cursor() #獲取cursor()
x=c.execute('select * from merch_merchant') #使用cursor()操作查詢
x.fetchone() #展示查詢結果,fetchone函數是獲得一行結果,fetchall函數是獲得所有行結果。均為元組
c.close() #關閉cursor()
conn.close() #關閉數據庫連接
參考:https://www.cnblogs.com/Leo_wl/p/3288402.html
5.ok,總算連接成功,由此可見python除了大小寫敏感,對版本要求也相當高。
它連接數據庫應該調用的是本地的oracle客戶端, 在整個過程中與oracle服務端的版本並沒有關系。
另外網上提到的需要配置環境變量的,我並未配置,也連接成功了。