7.3.4 データベース・オブジェクトのPythonプロキシ・オブジェクトの作成
oml.sync
関数を使用して、データベース表、ビューまたはSQL文のプロキシとしてPythonオブジェクトを作成します。
oml.sync
関数は、oml.DataFrame
オブジェクトまたはoml.DataFrame
オブジェクトのディクショナリを返します。oml.sync
によって返されるoml.DataFrame
オブジェクトは、データベース・オブジェクトのプロキシです。
このプロキシoml.DataFrame
オブジェクトを使用して、表からデータを選択できます。表からデータを選択するPython関数を実行すると、関数によってデータベース・オブジェクトから現在のデータが返されます。ただし、アプリケーションが表に列を追加したか、他の形でデータベース・オブジェクトのメタデータを変更した場合、そのデータベース・オブジェクトに対して再びoml.sync
が呼び出されるまでoml.DataFrame
プロキシ・オブジェクトにはそのような変更が反映されません。
ヒント:
メモリー・リソースおよび時間を節約するには、Pythonセッションで使用する表のプロキシのみを作成してください。
oml.dir
関数を使用すると、スキーマの環境内のoml.DataFrame
プロキシ・オブジェクトをリストできます。
oml.sync
関数の構文は次のとおりです。
oml.sync(schema=None, regex_match=False, table=None, view=None, query=None)
oml.sync
のschema
引数は、データベース・オブジェクトが存在するスキーマの名前を指定します。schema=None
(デフォルト)の場合は、現行スキーマが使用されます。
表についてoml.DataFrame
オブジェクトを作成するには、table
パラメータを使用します。ビューについて作成するには、view
パラメータを使用します。SQL SELECT
文について作成するには、query
パラメータを使用します。oml.sync
の呼出しでは、これらのパラメータのいずれか1つのみを指定できます。パラメータのうちの1つの引数は文字列である必要があり、他の2つのパラメータそれぞれの引数はNone
である必要があります。
問合せのプロキシ・オブジェクトを作成すると、データベースにビューを作成せずにoml.DataFrame
オブジェクトを作成できます。これは、現行スキーマに対してCREATE VIEW
システム権限を持っていない場合に有用です。schema
パラメータとquery
パラメータを同じore.sync
の呼出しで使用することはできません。
regex_match
引数を使用すると、table
またはview
引数の値が正規表現かどうかを指定できます。regex_match=True
の場合、oml.sync
は、パターンと一致するそれぞれのデータベース・オブジェクトについてoml.DataFrame
オブジェクトを作成します。一致した表またはビューは、表名またはビュー名をキーとして使用するdict
で返されます。
例7-10 データベース表のPythonオブジェクトの作成
この例では、データベース表のプロキシとしてoml.DataFrame
Pythonオブジェクトを作成します。この例については、COFFEE表はユーザーのスキーマに存在します。
import oml
# Create the Python object oml_coffee as a proxy for the
# database table COFFEE.
oml_coffee = oml.sync(table = 'COFFEE')
type(oml_coffee)
# List the proxy objects in the schema.
oml.dir()
oml_coffee.head()
この例のリスト
>>> import oml
>>>
>>> # Create the Python object oml_coffee as a proxy for the
... # database table COFFEE.
... oml_coffee = oml.sync(table = 'COFFEE')
>>> type(oml_coffee)
<class 'oml.core.frame.DataFrame'>
>>>
>>> # List the proxy objects in the schema.
... oml.dir()
['oml_coffee']
>>>
>>> oml_coffee.head()
ID COFFEE WINDOW
0 1 esp w
1 2 cap d
2 3 cap w
3 4 kon w
4 5 ice w
例7-11 regex_match引数の使用
この例では、regex_match
引数を使用して、名前がCで始まる表のoml.DataFrame
プロキシ・オブジェクトを含むdict
オブジェクトを作成します。この例については、COFFEE表とCOLOR表はユーザーのスキーマに存在し、名前がCで始まる表はこれらのみです。
# Create a dict of oml.DataFrame proxy objects for tables
# whose names start with 'C'.
oml_cdat = oml.sync(table="^C", regex_match=True)
oml_cdat.keys()
oml_cdat['COFFEE'].columns
oml_cdat['COLOR'].columns
この例のリスト
>>> # Create a dict of oml.DataFrame proxy objects for tables
... # whose names start with 'C'.
... oml_cdat = oml.sync(table="^C", regex_match=True)
>>>
>>> oml_cdat.keys()
dict_keys(['COFFEE', 'COLOR']
>>> oml_cdat['COFFEE'].columns
['ID', 'COFFEE', 'WINDOW']
>>> oml_cdat['COLOR'].columns
['REGION', 'EYES', 'HAIR', 'COUNT']
例7-12 更新された表の同期
この例では、oml.sync
を使用してデータベース表COFFEEのoml.DataFrame
を作成します。この例については、oml.sync
の最初の呼出し後に、他のデータベース・プロセスによって新しい列BREWがデータベース表に追加されています。oml.sync
を再度呼び出すと、oml.DataFrame
のメタデータが表のものと同期されます。
oml_coffee = oml.sync(table = "COFFEE")
oml_coffee.columns
# After a new column has been inserted into the table.
oml_coffee = oml.sync(table = "COFFEE")
oml_coffee.columns
この例のリスト
>>> oml_coffee = oml.sync(table = "COFFEE")
>>> oml_coffee.columns
['ID', 'COFFEE', 'WINDOW']
>>>
>>> # After a new column has been inserted into the table.
... oml_coffee = oml.sync(table = "COFFEE")
>>> oml_coffee.columns
['ID', 'COFFEE', 'WINDOW', 'BREW']
親トピック: データベースとPythonセッションの間のデータの移動