【 Python 】cx_OracleでOracleにアクセスしよう!

当ページのリンクには広告が含まれています。

今回はPythonからOracle データベースに接続し、データを更新したり取得する方法について解説します。

趣味で本格的なデータベースを使うことは無いとは思いますので、あくまでも仕事で必要に迫られたという前提です。

Oracleというデータベースについて基本的な知識があり、Pythonから接続する方法を知りたいという方が対象の記事になっています。

目次

接続する前の準備

Python から Oracleに接続するには、次の手順が必要です。

  1. Oracle インスタントクライアントのインストール
  2. Pythonのcx_Oracle パッケージのインストール
  3. Pythonプログラム上で cx_Oracle のインポート

OracleインスタントクライアントはOracle接続するための最小構成のドライバーであるため、他のOracle接続ツールをインストールしている場合や、Oracleに接続する他のアプリケーションがインストールされている環境においては、Oracle インスタントクライアントを入れなくても良い可能性があります。

Oracleインスタントクライアントのインストール

Oracle インスタントクライアントは Oracle公式のダウンロードペーシ(下図左)からダウンロードできます。

Windows版のインスタントクライアントは Windows用のダウンロードページ(下図右)から直接ダウンロードできます。

Windows用については、2021年9月の時点では下記が最新のインストーラーになります。

instantclient-basic-windows.x64-19.12.0.0.0dbru.zip

ダウンロードした zip ファイルを任意のフォルダに解凍した後で、Windows環境変数のPATHに解凍先のパスを登録するだけで完了です。

cx_Oracle のインストール

Python公式サイトからPythonをダウンロードして使っている方は、DOSプロンプトから下記コマンドを実行します。

AnacondaやMinicondaでPythonをインストールして使っている方DOSプロンプトから下記コマンドを実行します。

Oracleに接続し、SQLを実行するための手順

SQLやDDLを実行するためには、次の手順を実行します。

この手順は SQLite、PostgreSQL、SQLServer などの他のデータベースと同じです。

Oracleへの接続

Oracleに接続するためには、次のメソッドを実行します。

PostgreSQLやSQLServer の場合は connect メソッドから始まるのですが、Oracle だけは makedsn を使って tns (Transparent Network Substrate) オブジェクトを生成し、connect メソッドに渡す必要があります。

tns とは、Oracleが命名したDB接続用インターフェース技術の名前です。

ちなみに、tns は makedsn を使わなくても、下記の様に文字列で記述することも可能です。

データの取得

Oracle に対して select 文を発行し、データを取得する方法は次のようになります。

fetch には次の3種類が用意されています。

機能メソッド備考
全件取得fetchall()リスト形式で全件を返す。
1件づつ取得fatchone()データがあれば1行をタプル形式で返す。
データが無くなれば None を返す。
指定件数づつ取得fetchmeny(件数)

下記はOracle に接続し、条件に一致したデータを全件取得するサンプルです。

データの更新、DDLの実行

データの更新やDDLの実行は次のようになります。

トランザクションの開始は、最初のSQL実行時に自動で行われますので、特に明示的に記述する必要はありません。

もし何らかの都合で明示的に記述したい場合は、conn.begin() と記述します。

トランザクションが自動で開始されるということは、明示的にトランザクションを完了させないとデータは更新されません。

トランザクションの完了は、conn.commit() を、ロールバックしたい場合は conn.rollback() メソッドを呼び出します。 

DDLはロールバックが効かないので、commit() は必要ありませんが、commit() をしてもエラーにはなりません。

下記はinsertのサンプルです。

下記はDDLのサンプルです。

まとめ

今回は Python を使って Oracle に接続するために必要な Oracle インスタントクライアント、及び cx_Oracleのインストール方法と、Oracleに接続した後にデータの抽出や更新を行うための簡単なサンプルを紹介しまた。

Pythonのデータベース接続はデータベースの種類によって少しづつ異なりますが、接続してからの操作(データ抽出、データ更新、DDL発行)は同じです。

この記事がPythonでOracleに接続するための手助けになれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次