17
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[cx_Oracle入門](第1回) cx_Oracle概要

Last updated at Posted at 2020-06-01

連載目次

連載:cx_Oracle入門 目次

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

サンプルアプリケーション

sample01a.py
#!/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にアクセスするアプリケーションを作成したことのある方であれば不要なレベルですが、ソース内のコメント番号に対応して、各行を簡単に解説します。

  1. cx_Oracleをimportする必要があります。
  2. データベースに接続し、セッションを確立します。
  3. SQL文をハンドリングするためのカーソルオブジェクトを作成します。
  4. SQL文を実行します。
  5. 今回はSELECT文を発行しているので、結果セットの内容を取り出しています。
  6. レコードはタプルで戻されます。
  7. カーソルオブジェクトをクローズします。
  8. セッションを切断します。

変更履歴

  • 2020/6/7 :
  • タイトルに回数を追加
  • 「cx_Oracleのインストール」に環境変数への言及を追加
  • 「サンプルアプリケーション」にカーソルクローズを追加
  • 2020/6/27 :
  • 「cx_Oracleとは」にcx_Oracle 8.0の情報を追加
  • 「cx_Oracleのインストール」に旧バージョンのインストール方法を追加
  • 2020/7/1 : 連載目次を追加
17
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?