(一) Oracle 資料庫的連線方式
一般會需要「連線名稱」、「使用者名稱」、「密碼」、「主機名稱」、「連接阜」、「服務名稱」等資訊,可以先到官網下載 SQL developer 應用程式到桌面,然後按左上角新增連線,輸入資訊後確認自己可以連線到想要的資料庫。
(二) 下載 cx_Oracle 套件
打開終端機,pip install 一行搞定。
pip install cx_Oracle
(三) 連線吧
打開 python 編輯器,執行下方程式碼,沒有意外的話,恭喜連線成功,可以開始做事囉!
import cx_Oracle
import pandas as pdconnection = cx_Oracle.connect('使用者名稱/密碼@主機名稱/服務名稱',
encoding='UTF-8', nencoding='UTF-8')
sql = '''select * from test where 1=1''' # 輸入你要查找的資料表語法 df = pd.read_sql(sql, con=connection) # 將資料表存成DataFrame格式print(df) # 可以開始使用df做事囉
(四) 步驟三出錯了,很可能是這個error
cx_Oracle error. DPI-1047: Cannot locate a 64-bit Oracle Client library
這個問題在 Stack Overflow 上已經有許多討論,但不想讀英文的讀者,可以參考筆者的解決辦法。
步驟 1 : 首先到官網下載 Oracle Instant Client,解壓縮資料夾
步驟 2 : 將 instantclient_xx_xx 資料夾路徑,加入至使用者環境變數。開始 > 編輯系統環境變數 > 系統內容 > 環境變數 > 編輯使用者變數 > 新增至Path 變數底下
步驟 3 : 完成上述後,重啟 python,如果是Anaconda記得也要關掉重啟。重新執行程式,如果成功了那恭喜你。要是依然失敗,請繼續看下去。
步驟 4: 請打開步驟1下載的 instantclient_xx_xx 資料夾,找到 genezi.exe 並點擊執行,看是否報錯「缺少 msvcr120.dll 」,那表示你還必須到 Microsoft 下載 vcredist_x64.exe,然後安裝。安裝完成後重新執行 genezi.exe 看是不是沒有報錯了。
步驟 5: 再次重啟 python (Anaconda) 執行程式,恭喜順利連線 Oracle 資料庫!
後記
文中 (四) 提到的解決辦法,是將 instantclient 加入環境變數中。但其實在import cx_Oracle 後加入 init_oracle_client 指向 instantclient 資料夾路徑,也可以達到一樣的效果,就看讀者們要不要每次都多打這一行囉。
cx_Oracle.init_oracle_client(lib_dir="../yourpath/instantclient_xx")