【筆記】Python 連線 Oracle 資料庫

Jacky Fu
Jul 3, 2021

--

開門見山,這篇會簡介如何使用 python 連線 Oracle 資料庫,以及操作過程中可能遇到的小問題。那我們直接開始。

(一) Oracle 資料庫的連線方式

一般會需要「連線名稱」、「使用者名稱」、「密碼」、「主機名稱」、「連接阜」、「服務名稱」等資訊,可以先到官網下載 SQL developer 應用程式到桌面,然後按左上角新增連線,輸入資訊後確認自己可以連線到想要的資料庫。

使用Oracle SQL developer 連線畫面

(二) 下載 cx_Oracle 套件

打開終端機,pip install 一行搞定。

pip install cx_Oracle

(三) 連線吧

打開 python 編輯器,執行下方程式碼,沒有意外的話,恭喜連線成功,可以開始做事囉!

import cx_Oracle 
import pandas as pd
connection = 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")

如果你覺得文章對你有幫助,請給我一些掌聲。按住拍手不放 10 秒,每人最多可以拍 50下哦!文章會陸續更新,主要關於數據分析、資料開發筆記,以及一些個人想法的文章,歡迎有興趣的朋友們追蹤分享呦!

--

--

Jacky Fu

Write code with the left hand, run an e-commerce business with the right. Develop the habit of thinking carefully and then sprinting to execute. 🌱