1. 程式人生 > 實用技巧 >python連結oracle資料庫

python連結oracle資料庫

初次接觸Oracle資料庫,在安裝方面碰到許多的環境問題,以此作為記錄。

首先,python連線資料庫不需要直接下載客戶端oracle,這裡用一個巧妙的方式,即安裝PL/SQL Developer,不需要在本地安裝oracle資料庫,只需要在本機上配置plsql以實現遠端資料庫的連線。
首先我下載了cx_oracle,這個是python與oracle連線的一個庫,要注意,你的cx_oracle版本千萬要python版本嚴格一致,不然會報錯,去官網下載對應版本即可。這裡提供官網連結:https://pypi.python.org/pypi,查詢cx_oracle下載whl檔案。終端下執行本地安裝命令 :pip install cx_Oracle-6.0rc1-cp37-cp37m-win_amd64.whl。
然後安裝PLSQL,

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,這是Oracle Instant Client的下載首頁,有很多種版本可供下載。這裡要注意,要明白你的Oracle版本是多少位的,如果是32位,那麼就搜32位的版本下載對應的instantclient資料夾,如果是64的也是一樣,和你的電腦位數無關,如果這裡不一致的話,後面啟動PLSQL會報出初始化失敗的錯誤。
然後就是一系列的安裝就準備就緒了 ,我們找一個例子來測試下準備工作是否做好了。
程式碼:'''

 import cx_Oracle

 conn = cx_Oracle.connect('yn_bpa/[email protected]/myora')#'fkong/[email protected]/orcl'
 cursor = conn.cursor()

 print("連線成功!")

 cursor.close()
 conn.commit()
 conn.close()

程式碼部分也有要說明的,比如cx_oracle.connect(),括號裡填的是你實際資料庫的使用者名稱/密碼@IP地址(根據本地或遠端選擇)/service name.我這裡是遠端資料庫的service name.關於service name 可以自己去查一下。
除錯了一下 ,我的pycharm就報錯了,也是比較常見的錯誤。
'''

cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found". See https://cx-oracle.readthedocs.io/en/。

我猜測是版本不一致的錯誤,python是64位的,而oracle instantclient 與oracle都是32位的,於是我果斷下載32位的python嘗試。進入conda 終端,發現在base環境無法下載32位的python,所以我新建了虛擬環境。用
'''

set CONDA_FORCE_32BIT=1,

切換至32位下。codna info 可以檢視當前是32位還是64位。下載好32位的python以後,基本上達到了版本一致,也就大功告成了。
最後,發現還是報錯,cannot load.....dll檔案,於是百度了一下,說是把instantclient_11_2這個資料夾中的所有dll檔案複製到python所在的目錄就好了。由於 我建立的是子環境,所以我直接複製在了子環境的安裝目錄下。
最後,測試一下,連線成功。