1.3 SQLへのPythonの透過的変換

透過層クラスを使用すると、選択したPythonオブジェクトをOracleデータベース・オブジェクトに変換できるとともに、データベース内の表に対して対応するSQLを呼び出すようにオーバーロードされた、使い慣れた様々なPython関数を呼び出すこともできます。

OML4Py透過層は、次のことを行います。

  • Pythonのpandas.DataFrameオブジェクトをデータベース表に変換する関数を格納する

  • Python関数をオーバーロードして、その機能をSQLに変換する

  • データベース・データにプロキシ・オブジェクトを利用する

  • 使い慣れたPython構文を使用してデータベース・データを操作する

次の表は、透過層関数のリストです。

表1-1 透過層関数

関数 説明
oml.create

Pythonデータセットからデータベース・スキーマに表を作成します。

oml_object.pull

omlオブジェクトによって参照されるデータのコピーを含むローカルPythonオブジェクトを作成します。

oml.push

Pythonセッションからデータベース・スキーマ内のオブジェクトにデータをプッシュします。

oml.sync

データベース表またはビューを表すDataFrameプロキシ・オブジェクトをPythonに作成します。

oml.dir

Pythonセッション・ワークスペース内のomlオブジェクトの名前を返します。

oml.drop

永続データベースの表またはビューを削除します。

透過層プロキシ・クラスは、SQLデータ型またはオブジェクトを対応するPython型にマップします。これらのクラスは、マップされたPython型のものと同じPython関数および演算子を提供します。次の表は、透過層データ型クラスのリストです。

表1-2 透過層データ型クラス

クラス 説明
oml.Boolean

データベース・データ内の0、1およびNULL値の単一列を表すブール系列データ・クラス。

oml.Bytes

RAWまたはBLOBデータベース・データ型の単一列を表すバイナリ系列データ・クラス。

oml.Float

NUMBERBINARY_DOUBLEまたはBINARY_FLOATデータベース・データ型の単一列を表す数値系列データ・クラス。

oml.String

VARCHAR2CHARまたはCLOBデータベース・データ型の単一列を表す文字系列データ・クラス。

oml.DataFrame

oml.Booleanoml.Bytesoml.Floatおよびoml.Stringデータの複数の列を表す表形式のDataFrameクラス。

次の表は、Pythonとデータベースの間のデータの読取りと書込みの両方に関するOML4Pyデータ型のマッピングのリストです。

表1-3 Pythonデータ型とSQLデータ型の対応付け

データベース読取り Pythonデータ型 データベース書込み

N/A

Boolean

oranumber == Trueの場合はNUMBER (デフォルト)、それ以外の場合はBINARY_DOUBLE

BLOB

RAW

bytes

BLOB

RAW

BINARY_DOUBLE

BINARY_FLOAT

NUMBER

float

oranumber == Trueの場合はNUMBER (デフォルト)、それ以外の場合はBINARY_DOUBLE

CHAR

CLOB

VARCHAR2

str

CHAR

CLOB

VARCHAR2