単一行の取得

ストアから単一行を取得するには、次の手順を実行します。

  1. ストア・ハンドルを作成し、開きます。

  2. Pythonディクショナリを作成します。主キー。ディクショナリ内の名前と値の各ペアは、取得する行の主キーと値に対応している必要があります。この場合、完全な主キーがディクショナリに存在している必要があります。

  3. Store.get()を使用して行を取得します。これにより、ストアの読取り操作が実行されます。

  4. 取得された行は、Pythonディクショナリです。ディクショナリ内の個々の項目は、Pythonディクショナリと同じようにして取得できます。

たとえば、「ストアへの行の書込み」では、ストアに表の行を格納する簡単な例を示しました。次の簡単な例では、行の取得方法を示します。

from nosqldb import Factory
from nosqldb import IllegalArgumentException
from nosqldb import ProxyConfig
from nosqldb import StoreConfig

import logging
import os
import sys

# locations where our store and proxy can be found
kvlite = 'localhost:5000'
proxy = 'localhost:7010'

# set logging level to debug and log to stdout
def setup_logging():
    rootLogger = logging.getLogger()
    rootLogger.setLevel(logging.DEBUG)

    logger = logging.StreamHandler(sys.stdout)
    logger.setLevel(logging.DEBUG)
    formatter = logging.Formatter('\t%(levelname)s - %(message)s')
    logger.setFormatter(formatter)
    rootLogger.addHandler(logger)

# configure and open the store
def open_store():
    kvstoreconfig = StoreConfig('kvstore', [kvlite])
    return Factory.open(proxy, kvstoreconfig)

def display_row(row):
    try:
            print "Retrieved row:"
            print "\tItem: %s" % row['item']
            print "\tDescription: %s" % row['description']
            print "\tCount: %s" % row['count']
            print "\tPercentage: %s" % row['percentage']
            print "\n"
    except KeyError, ke:
        logging.error("Row display failed. Bad key: %s" % ke.message)

def do_store_ops(store):
    try:
        primary_key_d = {"item" : "bolts"}
        row = store.get("myTable", primary_key_d)
        if not row:
            logging.debug("Row retrieval failed")
        else:
            logging.debug("Row retrieval succeeded.")
            display_row(row)
    except IllegalArgumentException, iae:
        logging.error("Row retrieval failed.")
        logging.error(iae.message)
        return
    except KeyError, ke:
        logging.error("Row display failed. Bad key: %s" % ke.message)

if __name__ == '__main__':

    setup_logging()
    store = open_store()
    do_store_ops(store)
    store.close() 

子表の取得

「子表への行の書込み」では、子表にデータを移入する方法を示しました。そのデータを取得するには、親表の行に使用される主キー、および子表の行の主キーを指定する必要があります。次に例を示します。

...

def do_store_ops(store):
    try:
        primary_key_c = {"item" : "bolts",
                         "itemSKU" : "1392610"}

        row = store.get("myInventory.itemDetails", primary_key_c)
        if not row:
            logging.debug("Row retrieval failed")
        else:
            logging.debug("Row retrieval succeeded.")
            print row
    except IllegalArgumentException, iae:
        logging.error("Row retrieval failed.")
        logging.error(iae.message)
        return
    except KeyError, ke:
        logging.error("Row display failed. Bad key: %s" % ke.message)

ネスト表を反復する方法の詳細は、「ネストされた表の反復使用」を参照してください。