本記事は、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へ接続する方法について学びました。