[Python]Oracleデータベースへの接続方法

[Python]Oracleデータベースへの接続方法

動作環境

クライアント

  • 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に接続してみる

oracle_connet.py
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この記事のコメント

メールアドレスが公開されることはありません。お気軽にコメントどうぞ。

人気記事