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データ型 | データベース書込み | 
|---|---|---|
| N/A | 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 |