2.3 使い慣れたPython関数および構文を使用したデータベース表およびビューの操作
透過層クラスを使用すると、使い慣れたPython関数および構文を使用して、データベース表およびビューを操作できます。たとえば、データベース・データにマップするDataFrameプロキシ・オブジェクトを使用すると、高パフォーマンスのコンピュート・エンジンとしてデータベースを使用して、データベースで実行されるSQLを透過的に生成するオーバーロードされたPandas関数を呼び出せます。
OML4Py透過層は、次のことを行います。
-
pandas.DataFrame
から表およびビューを作成し、プロキシ・オブジェクトを表およびビューに取得できるようにする。 -
機能を透過的にSQLに変換する特定のPython関数をオーバーロードする
-
データベース・データにプロキシ・オブジェクトを利用する
-
使い慣れたPython構文を使用してデータベース・データを操作する
次の表に、プロキシ・オブジェクトおよび表/ビューを取得および作成するための透過層関数を示します。
表2-1 プロキシ・オブジェクトおよび表/ビューを取得および作成するための透過層関数
関数 | 説明 |
---|---|
oml.create |
Pythonデータセットからデータベース・スキーマに表を作成します。 |
oml_object.pull |
|
oml.push |
Pythonセッションからデータベース・スキーマ内のオブジェクトにデータをプッシュします。 |
oml.sync |
データベース表またはビューを表す |
oml.dir |
Pythonセッション・ワークスペース内の |
oml.drop |
永続データベースの表またはビューを削除します。 |
透過層プロキシ・クラスは、SQLデータ型またはオブジェクトを対応するPython型にマップします。これらのクラスは、マップされたPython型のものと同じPython関数および演算子を提供します。次の表は、透過層データ型クラスのリストです。
表2-2 透過層データ型クラス
クラス | 説明 |
---|---|
oml.Boolean |
データベース・データ内の0、1およびNULL値の単一列を表すブール系列データ・クラス。 |
oml.Bytes |
|
oml.Float |
|
oml.String |
|
oml.DataFrame |
|
oml.Integer |
データベース内のNUMBER(*,0) データの単一列を表すデータ・クラス。
|
oml.Datetime |
Oracle Databaseの |
oml.Timezone |
TIME STAMP WITH TIME ZONE をサポートするためにoml.Datetime とともに使用される時間クラス。
|
oml.Timedelta |
2つの日付または時間の間の差異、またはOracle DatabaseのINTERVAL DAY TO SECOND の単一列の系列を表す時間クラス。
|
次の表に、Pythonとデータベースの間のデータの読取りと書込みの両方に関するPythonデータ型の対応付けを示します。
表2-3 Pythonデータ型とSQLデータ型の対応付け
データベース読取り | Pythonデータ型 | データベース書込み |
---|---|---|
該当なし |
Bool |
|
|
bytes |
|
|
float |
|
|
str |
|
NUMBER(*,0) |
int |
NUMBER(*,0) |
TIMESTAMP またはTIMESTAMP WITH TIME ZONE |
datetime.datetime |
TIMESTAMP またはTIMESTAMP WITH TIME ZONE |
TIMESTAMPWITHTIMEZONE |
datetime.timezone |
TIMESTAMPWITHTIMEZONE |
INTERVALDAYTOSECOND |
datetime.timedelta |
INTERVALDAYTOSECOND |