ストア内の表への行の書込み

データ・ストアの表への新しい行の書込みおよび既存の行の更新は同様の操作です。この項の後半では、行を更新する場合または行を作成する場合にのみ機能するメソッドについて説明します。表にデータを追加できるのは、表をストアに追加した後のみです。詳細は、「Oracle NoSQL Database表および索引の概要」を参照してください。

ストア内の表に行を書き込むには、次の手順を実行します。

子表へのデータの書込み

子表に書き込むには、親表に対するタスクを完了します。ただし、parent-table.child-tableなどの2つのパートからなる表明を使用します。

たとえば、「子表の定義」では子表の作成方法を示しました。その表にデータを書き込むには、次の手順を実行します。

IDENTITY列を持つ表への行の書込み

IDENTITY列を含む表を作成したら、プログラムで新しい行を書き込むことができます。

IDENTITY列を持つ表にデータを書き込む前に、その表を作成する必要があります。詳細は、IDENTITY列を持つ表の作成を参照してください。次の例では、IDENTITY列を持つ表を作成し、その表にPythonドライバ・コードを使用してその表にデータを書き込む方法について説明します。
  1. 次のコマンドを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->
    
  2. 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シェルまたはコマンドライン・インタフェースから実行します。
  3. 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()

    このメソッドでは、指定されたバージョン情報に値が一致する場合にのみ行が格納されます。詳細は、「行バージョンの使用」を参照してください。