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,
然後就是一系列的安裝就準備就緒了 ,我們找一個例子來測試下準備工作是否做好了。
程式碼:'''
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所在的目錄就好了。由於 我建立的是子環境,所以我直接複製在了子環境的安裝目錄下。
最後,測試一下,連線成功。