ウィンドウズマックソフトウェア設定セキュリティ生産性リナックスAndroidパフォーマンス設定Apple すべて

Oracle DatabaseをPythonで使用する方法

編集済み 2 数か月前 によって ExtremeHow 編集チーム

オラクルデータベースPython統合プログラミングデータベース管理スクリプティング管理ツールシステム構成パフォーマンスクラウドコンピューティングエンタープライズソリューション

Oracle DatabaseをPythonで使用する方法

翻訳が更新されました 2 数か月前

Oracle Databaseは、強力で広く使用されているリレーショナルデータベース管理システム(RDBMS)です。その堅牢な機能、高性能、信頼性で知られています。一方、Pythonは、データ分析やWeb開発などで広く使用されている汎用的で習得しやすいプログラミング言語です。これら2つの技術を組み合わせることで、開発者はOracle Databaseに保存されたデータと効率的に相互作用できるアプリケーションを作成できます。このチュートリアルでは、Oracle DatabaseをPythonで使用する方法を探ります。環境のセットアップ、接続の確立、基本的なデータベース操作の実行、および例外処理を行うための手順をカバーします。

環境のセットアップ

PythonでOracle Databaseを操作する前に、開発環境をセットアップする必要があります。これには、PythonとOracle Database間の通信を促進するために必要なライブラリとツールのインストールが含まれます。

cx_Oracleのインストール

cx_Oracleは、Oracleデータベースへのアクセスを可能にするPythonモジュールであり、SQLクエリの実行やデータ操作などを可能にします。その豊富な機能セットのため、PythonをOracleデータベースに接続する人気の選択肢です。

cx_Oracleをインストールするには、pipなどのパッケージマネージャーを使用できます。コマンドプロンプトまたはターミナルを開き、次のコマンドを入力します:

pip install cx_Oracle

これにより、cx_Oracleモジュールがダウンロードおよびインストールされ、Pythonスクリプトで使用可能になります。

Oracle Instant Clientのインストール

cx_Oracleモジュールは、Oracle Instant Clientがシステムにインストールされていることを要求します。Oracle Instant Clientは、Oracle Databaseとの通信を可能にするために必要なライブラリとツールを提供します。

公式のOracleウェブサイトからOracle Instant Clientをダウンロードできます。オペレーティングシステムに応じたパッケージを選択し、Oracleが提供するインストール手順に従ってください。

インストールが完了したら、cx_OracleがOracle Instant Clientを見つけられるように適切な環境変数を設定する必要があります。これは、Linuxの場合はLD_LIBRARY_PATH、Windowsの場合はPATHにOracle Instant Clientがインストールされているディレクトリを含めることが一般的です。

Oracleデータベースへの接続

環境をセットアップした後、PythonをOracle Databaseに接続できます。このセクションでは、cx_Oracleを使用してOracle Databaseインスタンスへの接続を確立する方法を説明します。

接続の作成

cx_OracleとOracle Instant Clientがインストールおよび設定されたら、PythonスクリプトからOracle Databaseに接続を作成できます。接続を確立する基本的な例を以下に示します:

import cx_Oracle
# 接続詳細を定義
dsn_tns = cx_Oracle.makedsn('ホスト名', 'ポート', service_name='サービス名')
username = 'ユーザー名'
password = 'パスワード'
# 接続を確立
try:
    connection = cx_Oracle.connect(user=username, password=password, dsn=dsn_tns)
    print('接続が正常に確立されました。')
except cx_Oracle.DatabaseError as e:
    print('データベースへの接続中にエラーが発生しました:', e)
# 接続を閉じる
connection.close()

この例では、まずcx_Oracleモジュールをインポートします。ホスト名、ポート、ユーザー名、パスワード、Oracleデータベースインスタンスのサービス名を含む接続の詳細を定義します。そして、cx_Oracle.connect()関数を使用して接続を確立します。データベースのエラーを処理するためにtryおよびexceptブロックで接続試行を包むことは、常に良いプラクティスです。

SQLクエリの実行

Oracle Databaseへの接続が確立されると、データベースに保存されたデータと対話するためにSQLクエリを実行できます。このセクションでは、データのクエリ、レコードの挿入、データの更新などの基本的なデータベース操作を行う方法を探ります。

データのクエリ

Oracleデータベースからデータを取得するには、SQL SELECT文を使用できます。以下は、cx_Oracleを使用してSELECTクエリを実行する例です:

import cx_Oracle
# 接続詳細
dsn_tns = cx_Oracle.makedsn('ホスト名', 'ポート', service_name='サービス名')
username = 'ユーザー名'
password = 'パスワード'
# 接続を確立
try:
    connection = cx_Oracle.connect(user=username, password=password, dsn=dsn_tns)
    cursor = connection.cursor()
    # SELECTクエリを実行
    cursor.execute('SELECT * FROM your_table_name')
    # 結果をフェッチして出力
    for row in cursor.fetchall():
        print(row)
except cx_Oracle.DatabaseError as e:
    print('SQLクエリの実行中にエラーが発生しました:', e)
finally:
    cursor.close()
    connection.close()

この例では、前述のように接続を確立し、connection.cursor()メソッドを使用してカーソルオブジェクトを作成します。カーソルはSQLクエリを実行するために使用されます。cursor.execute()を使用してSELECTクエリを実行し、cursor.fetchall()を使用して結果を取得します。結果はコンソールに出力されます。リソースを解放するために、カーソルと接続を閉じることを常に忘れないでください。

データの挿入

Oracleデータベースのテーブルに新しいレコードを追加するには、SQL INSERT文を使用できます。以下は、cx_Oracleを使用してデータを挿入する例です:

import cx_Oracle
# 接続詳細
dsn_tns = cx_Oracle.makedsn('ホスト名', 'ポート', service_name='サービス名')
username = 'ユーザー名'
password = 'パスワード'
# 接続を確立
try:
    connection = cx_Oracle.connect(user=username, password=password, dsn=dsn_tns)
    cursor = connection.cursor()
    # INSERTクエリとデータを定義
    insert_query = 'INSERT INTO your_table_name (column1, column2) VALUES (:1, :2)'
    data_to_insert = [("Value1_1", "Value1_2"), ("Value2_1", "Value2_2")]
    # INSERTクエリを実行
    cursor.executemany(insert_query, data_to_insert)
    connection.commit()
    print('データが正常に挿入されました。')
except cx_Oracle.DatabaseError as e:
    print('データの挿入中にエラーが発生しました:', e)
    connection.rollback()
finally:
    cursor.close()
    connection.close()

この例では、INSERTクエリと挿入するデータを定義します。cursor.executemany()メソッドを使用して、複数のデータセットでINSERTクエリを実行します。実行後、connection.commit()を使用してトランザクションをコミットし、変更を永続化します。エラーが発生した場合は、connection.rollback()を使用して行われた変更を元に戻します。

データの更新

既存のテーブルのレコードを更新するには、SQL UPDATE文を使用できます。以下は、cx_Oracleを使用してデータを更新する例です:

import cx_Oracle
# 接続詳細
dsn_tns = cx_Oracle.makedsn('ホスト名', 'ポート', service_name='サービス名')
username = 'ユーザー名'
password = 'パスワード'
# 接続を確立
try:
    connection = cx_Oracle.connect(user=username, password=password, dsn=dsn_tns)
    cursor = connection.cursor()
    # UPDATEクエリを定義
    update_query = 'UPDATE your_table_name SET column1 = :1 WHERE column2 = :2'
    data_to_update = ("NewValue1", "CriteriaValue2")
    # UPDATEクエリを実行
    cursor.execute(update_query, data_to_update)
    connection.commit()
    print('データが正常に更新されました。')
except cx_Oracle.DatabaseError as e:
    print('データの更新中にエラーが発生しました:', e)
    connection.rollback()
finally:
    cursor.close()
    connection.close()

この例では、テーブル内の既存データを修正するためにUPDATEクエリを実行します。cursor.execute()メソッドを使用して、新しい値とプレースホルダー、および更新の条件を渡します。実行後、変更を適用するためにトランザクションをコミットします。

例外処理

データベース操作を行う際には、例外を効果的に処理して、アプリケーションがスムーズにエラーに対処できるようにすることが重要です。データベース操作の周りでtry-exceptブロックを使用することで、発生する例外をキャッチして管理できます。

たとえば、cx_OracleのDatabaseError例外を使用して、接続の確立やクエリの実行時にデータベース関連のエラーをキャッチして処理することができます:

try:
    # データベース操作
except cx_Oracle.DatabaseError as e:
    print('エラーが発生しました:', e)

例外を処理することに加えて、カーソルや接続を閉じることによってデータベースリソースを解放することも重要です。これをfinallyブロックにラップすることで、例外が発生したかどうかにかかわらず、確実に実行されるようにします。

結論

cx_Oracleモジュールを使用することにより、Python開発者はOracleデータベースに効果的に接続して相互作用できます。このチュートリアルでは、環境をセットアップし、Oracleデータベースに接続し、クエリを実行し、データを挿入および更新するためのSQLクエリを実行し、例外を処理する手順をカバーしました。これらの技術をワークフローに組み込むことで、OracleデータベースとPythonの力を活用した堅牢なアプリケーションを構築できます。

記事の内容に誤りがある場合, あなたは


コメント