[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に接続してみる
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この記事のコメント
メールアドレスが公開されることはありません。お気軽にコメントどうぞ。