マップの使用
すべてのマップ・エントリは同じ型である必要があります。マップの値の型にかかわらず、キーは常に文字列です。
文字列「[]」は予約されていて、キー名に使用することはできません。
表のフィールドをマップとして宣言する場合、MAP()
文を使用します。マップ要素データ型も宣言する必要があります。
主キーがUIDで2番目のフィールドに整数のマップを持つシンプルな2つのフィールドの表を定義するには、次のDDL文を使用します。
CREATE TABLE myTable (
uid INTEGER,
myMap MAP(INTEGER),
PRIMARY KEY (uid)
)
マップ・フィールドでは、DEFAULT
およびNOT NULL
制約はサポートされていません。
マップに書き込むには、次のようにします。
mmap = {"field1" : 1,
"field2" : 2,
"field3" : 3}
row_d = {'uid' : 0,
'myMap' : mmap
}
try:
store.put("myTable", row_d)
logging.debug("Store write succeeded.")
except IllegalArgumentException, iae:
logging.error("Could not write table.")
logging.error(iae.message)
sys.exit(-1)
マップのfield2を読み取るには、次のようにします。
try:
primary_key_d = {"uid" : 0}
row = store.get("myTable", primary_key_d)
if not row:
logging.debug("Row retrieval failed")
else:
logging.debug("Row retrieval succeeded.")
## prints '2'
print row['myMap']['field2']
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)