単一行の取得
ストアから単一行を取得するには、次の手順を実行します。
-
ストア・ハンドルを作成し、開きます。
-
Pythonディクショナリを作成します。主キー。ディクショナリ内の名前と値の各ペアは、取得する行の主キーと値に対応している必要があります。この場合、完全な主キーがディクショナリに存在している必要があります。
-
Store.get()
を使用して行を取得します。これにより、ストアの読取り操作が実行されます。 -
取得された行は、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)
ネスト表を反復する方法の詳細は、「ネストされた表の反復使用」を参照してください。