[Python]Oracleデータベースへの接続方法
![[Python]Oracleデータベースへの接続方法](https://chibashi.me/wp-content/uploads/2019/08/Python-connect-to-Oracle-1024x576.jpg)
動作環境
クライアント
- Windows 10 64bit
- Python 3.7.2
- Oracle Instant Client 12.1.0.2.0
使用したパッケージ
- cx_Oracle 7.2.1
サーバー
- Windows Server 2003 R2
- Oracle Database 10g Release 10.2.0.1.0
Oracle Instant Clientを導入
1.Oracle Instant Client を公式ページからダウンロード
※ダウンロードにはOracleアカウントの登録が必要
2.ダウンロードしたzipファイルを"C:\Oracle"に解凍
3.環境変数 PATHに(2)で保存したディレクトリパスを追加
cx_Oracleをインストール
1.コマンドプロンプトを起動します。
コマンドプロンプトの起動
1.[windowsキー] + Rを同時に押す
2.ファイル名を指定して実行の名前にcmdと入力してEnterキーを押す
2.仮想環境を作成している場合は、対象のディレクトリをカレントにする
3.cx_Oracleパッケージをインストール
# pipenvでインストール $ pipenv install cx_Oracle # pipでインストール $ python -m pip install cx_Oracle --upgrade
PythonからOracleに接続してみる
import cx_Oracle
# 接続情報
cle_conf = {
"ID" : "[スキーマ名]",
"PASS" : "[パスワード]",
"HOST" : "[接続先のホスト名 or IPアドレス]",
"SID" : "[SID]",
"PORT" : "[ポート番号]"
}
try
# tnsを設定
tns = cx_Oracle.makedsn( cle_conf["HOST"], cle_conf["PORT"], cle_conf["SID"] )
# oracleに接続
con = cx_Oracle.connect( cle_conf["ID"], cle_conf["PASS"], tns )
# カーソルオブジェクト生成(お約束)
cur = con.cursor()
# select文実行
cur.execute("SELECT INSTANCE_NAME, HOST_NAME FROM V$instance")
# 抽出結果を取得
res = cur.fetchall()
# 検索結果を出力
for r in res:
print("%d : %s" % r[0], r[1]
except Exception as ex:
print(ex)
finally:
# カーソルオブジェクトの破棄
if "cur" in vars() and cur is not None : cur.close()
# oracle切断
if "con" in vars() and con is not None : con.close()
cx_oracle使用で発生したエラーと対処方法
cx_oracle.connect()処理でエラー
エラー内容
DPI-1047: Cannot Locate a 64-bit Oracle Client libraty: …
原因
Win10 64bitに対して、既にインストールしているOracleClientが32bitだった為。
対処方法
Oracle Instant Client を公式ページから64bit版をダウンロード。
環境変数 PATHに解党したディレクトリまでのパスを設定。
一度、パソコンを再起動して反映させた後に再度、oracleに接続してみる。
Commentsこの記事のコメント
メールアドレスが公開されることはありません。お気軽にコメントどうぞ。