ストア内の表への行の書込み
データ・ストアの表への新しい行の書込みおよび既存の行の更新は同様の操作です。この項の後半では、行を更新する場合または行を作成する場合にのみ機能するメソッドについて説明します。表にデータを追加できるのは、表をストアに追加した後のみです。詳細は、「Oracle NoSQL Database表および索引の概要」を参照してください。
ストア内の表に行を書き込むには、次の手順を実行します。
子表へのデータの書込み
子表に書き込むには、親表に対するタスクを完了します。ただし、parent-table.child-tableなどの2つのパートからなる表明を使用します。
たとえば、「子表の定義」では子表の作成方法を示しました。その表にデータを書き込むには、次の手順を実行します。
IDENTITY列を持つ表への行の書込み
IDENTITY列を含む表を作成したら、プログラムで新しい行を書き込むことができます。
- 次のコマンドをSQL CLIで実行して、IDENTITY列を含む
myTable
という表を作成します。sql-> CREATE TABLE myTable ( id INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 MAXVALUE 10 CYCLE CACHE 3), name STRING, PRIMARY KEY (id)); Statement completed successfully sql->
myTable
表にデータを書き込むには、次のPythonコードを実行します。from nosqldb import Factory from nosqldb import IllegalArgumentException from nosqldb import ProxyConfig from nosqldb import StoreConfig from nosqldb import Row import logging import os # locations where our store and proxy can be found kvlite = 'localhost:5000' proxy = 'localhost:7010' kvstoreconfig = StoreConfig('kvstore', [kvlite]) store = Factory.open(proxy, kvstoreconfig) row_d = Row({'name':'joe'}) try: store.put("myTable", row_d) identity_value = row_d.get_identity_value() logging.debug("Store write succeeded.") except IllegalArgumentException, iae: logging.error("Could not write table.") logging.error(iae.message) store.close()
注意:
このコードを実行する前に、kvclient
およびkvproxy
が稼働中であることを確認してください。ヒント:
前述のコードを.py
ファイルに配置して、Pythonシェルまたはコマンドライン・インタフェースから実行します。- SQL CLIで次のコマンドを実行し、行の挿入を確認します。
sql-> select * from myTable; {"id":1,"name":"joe"} 1 row returned
その他の格納操作
前述した非常に単純な使用方法であるメソッド以外に、使用できる格納操作が3つあります。
-
Store.put_if_absent()
このメソッドでは、行の主キー値が表に存在しない場合にのみ行が格納されます。つまり、このメソッドは、作成操作になった場合にのみ成功します。
-
Store.put_if_present()
このメソッドでは、行の主キー値が表にすでに存在する場合にのみ行が格納されます。つまり、このメソッドは、更新操作になった場合にのみ成功します。
-
Store.put_if_version()
このメソッドでは、指定されたバージョン情報に値が一致する場合にのみ行が格納されます。詳細は、「行バージョンの使用」を参照してください。