連載目次
cx_Oracleとは
cx_OracleはPythonからOracle DatabaseにSQLアクセスするためのモジュールです。オラクル社が自ら作成しています。
PEP 249 (Python Database API Specification v2.0)になるべく準拠するように作成されています。
2020/6/1(本記事初期公表)時点のcx_Oracleのバージョンは7.3です。
Python2.7以降、もしくはPython3.5以降で稼働します。
また、2020/6/27にcx_Oracleのバージョン8.0がリリーされました。
8.0はPython2のサポートを終了し、Python3.5以降のサポートとなっていますので、Python2を利用予定の方はご注意ください。
7.3も引き続き入手可能です。
ライセンスはBSD licenseです。
DBアクセス部分はPro*Cではなく、ODPI-C(Oracle Database Programming Interface for C)という、オラクル社提供のOSSのC言語用のOracle Databaseアクセスライブラリを使用しています。
cx_Oracleには大きくは以下のような機能があります。
- 基本的なSQLアクセス(DML / DDL / DCL)
- PL/SQLの実行(無名PL/SQL、ストアドプログラム)
- SODA(Simple Oracle Document Access, JSONドキュメントストアにアクセスするためのAPI)への対応
- XML DB(XMLType)への対応
- オブジェクト機能への対応
- クライアントサイド・コネクションプールの提供
- その他Oracle Database機能への対応(インスタンスの起動/停止等)
cx_Oracleの基本的な情報源
すべて英語ベースです。
cx_Oracleのインストール
前準備
cx_Oracleを利用するためにはOracle Clientが必要です。Instant Clientでも問題ありません。JavaでいうところのThin Driverに相当するものはありません。
Oracle Clientのバージョンは11.2以上に対応しています。接続先のOracle Database Server側は、利用しているOracle Clientが対応しているバージョンが利用可能となります。
cx_Oracle利用のための環境変数は特にありませんが、Oracle Clientのための環境変数(ORACLE_HOME, NLS_LANG等)は必要です。
cx_Oracleを利用したアプリケーションをテストする前に、SQL*PlusやSQL Developerなどを使用して、cx_Oracleインストール対象マシンからOracle Databaseにアクセスできることを確認しておいてください。
インストール
pipやcondaのようなパッケージマネージャーを使用してインストールすることが可能です。以下、pipでのインストール例です。
pip install cx_Oracle
Python2環境や、あえて古いバージョンを使用したい場合は、以下の様にバージョン番号を指定してインストールします。
pip install cx_Oracle==7.3
サンプルアプリケーション
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cx_Oracle # (1)
USERID = "admin"
PASSWORD = "FooBar"
DESTINATION = "atp1_low"
SQL = "select 12345 from dual"
connection = cx_Oracle.connect(USERID, PASSWORD, DESTINATION) # (2)
cursor = connection.cursor() # (3)
cursor.execute(SQL) # (4)
for row in cursor: # (5)
print(row[0]) # (6)
cursor.close() # (7)
connection.close() # (8)
以下、他の言語でOracle Databaseにアクセスするアプリケーションを作成したことのある方であれば不要なレベルですが、ソース内のコメント番号に対応して、各行を簡単に解説します。
- cx_Oracleをimportする必要があります。
- データベースに接続し、セッションを確立します。
- SQL文をハンドリングするためのカーソルオブジェクトを作成します。
- SQL文を実行します。
- 今回はSELECT文を発行しているので、結果セットの内容を取り出しています。
- レコードはタプルで戻されます。
- カーソルオブジェクトをクローズします。
- セッションを切断します。
変更履歴
- 2020/6/7 :
- タイトルに回数を追加
- 「cx_Oracleのインストール」に環境変数への言及を追加
- 「サンプルアプリケーション」にカーソルクローズを追加
- 2020/6/27 :
- 「cx_Oracleとは」にcx_Oracle 8.0の情報を追加
- 「cx_Oracleのインストール」に旧バージョンのインストール方法を追加
- 2020/7/1 : 連載目次を追加