Engineering Note

プログラミングなどの技術的なメモ

PythonからOracle Database 12c Release 2(12.2.0.1)への接続設定

oracle 12c

本記事は、PythonからOracle Database 12c Release 2(12.2.0.1.0)へcx_Oracleというインタフェースを利用して接続するための設定メモになります。

  

 

事前準備

事前準備として、前回インストールしたLinux環境(CentOS7)上のOracle Database 12c Release 2(12.2.0.1.0)のPDBを利用します。

 

 

 

 

またPHPから接続する際に利用したOracle Instant Clientもインストールしておきます。

 

 

Python3のインストール

同じLinux環境(CentOS7)にPython3をインストールします。

なお、ビルドしてインストールする場合、gcc8をインストールしないとmake時にエラーが出るようなので、ここでは簡単にIUS Community Projectのリポジトリを追加し、そこからyumでインストールします。

 

 

 > yum install -y https://centos7.iuscommunity.org/ius-release.rpm
 > yum install -y python36u python36u-libs python36u-devel python36u-pip
 > python3 --version
 Python 3.6.8
 > pip3 --version
 pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

 

上記でPython3とpipがインストールできたことが確認できました。

 

パッケージのインストール

cx_Oracleのインストール

それではpipコマンドから以下のcx_Oracleをインストールします

 

 

 > pip3 install cx_Oracle
 WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
 Collecting cx_Oracle
   Downloading https://files.pythonhosted.org/packages/d5/15/d38862a4bd0e18d8ef2a3c98f39e743b8951ec5efd8bc63e75db04b9bc31/cx_Oracle  -7.3.0-cp36-cp36m-manylinux1_x86_64.whl (737kB)
     100% |████████████████████████████████| 737kB 785kB/s 
 Installing collected packages: cx-Oracle
 Successfully installed cx-Oracle-7.3.0

 > python3 -c "import cx_Oracle"
 > 

 

無事インストールが完了しました。

 

PythonからOracle Databaseに接続

準備が整ったので、以下のPythonテストコードからDBに接続してみます。

使用するDBは前回作成したPDB1になります。

事前にインスタンスとリスナーも起動しておき、ORACLE_HOMEなどのパスも通しておきます。

 

# test_con.py
import cx_Oracle

HOST = 'localhost'
PORT = '1521'
SVS ='pdb1'

tns = cx_Oracle.makedsn(HOST, PORT, service_name=SVS)
conn = cx_Oracle.connect("ora01", "oracle", tns)

cur = conn.cursor()
cur.execute("""
    SELECT * FROM Test ORDER BY ID
    """)
rows = cur.fetchall()

print("ID\tNAME")
for r in rows:
    print("{}\t{}".format(r[0], r[1]))

conn.close()

 

上記のスクリプトを実行します。

 

 > python3 test_con.py 
 ID      NAME
 1       hoge

 

無事接続できたことが確認できました。

 

最後に

今回はPythonからcx_Oracleを使用してOracle Database 12c Release 2へ接続する方法について学びました。

これまでにPHPPerlPythonと続けて記事を書きましたが、Pythonが一番楽に設定ができたと思いました。