這是我尋求從常規DynamoDB表切換到具有全局輔助索引的DynamoDB2表的繼續**。如何僅使用boto 2.25.0按全局二級索引查詢DynamoDB2表?
所以我創造了我的表所示here,然後添加了以下兩個要素:
table.put_item(data={'firstKey': 'key01', 'message': '{"firstKey":"key01", "comments": "mess 1 w/o secondKey"}'})
table.put_item(data={'firstKey': 'key02', 'secondKey':'skey01', 'message': '{"firstKey":"key02", "parentId":"skey01", "comments": "mess 2 w/ secondKey"}'})
我想現在要做的就是找回通過它們(我)唯一firstKey
值的項目或(ii)唯一secondKey
值。第一個很容易:
res1 = table.get_item(firstKey='key01')
res1['message']
我想不出如何做第二個。這是行不通的:
res2 = table.get_item(secondKey='skey01')
產生The provided key element does not match the schema
。好的,這是預期的。當我這樣做:
res2 = table.query(secondKey='skey01',index='secondKeyIndex')
我得到You must specify more than one key to filter on
。
那麼我如何才能使它工作?請注意,當我有一個項目的價值secondKey
,我不知道其相應的firstKey
。
===== 更新:這裏是我試過幾個其他的事情:
這
res2 = table.query(secondKey__eq='skey01',index='secondKeyIndex')
生產
boto.dynamodb2.exceptions.QueryError: You must specify more than one key to filter on.
在下面的塊, query
聲明沒有產生任何錯誤
res2 = table.query(secondKey='skey01',secondKey__eq='skey01',index='secondKeyIndex')
for r in res2:
print res2['secondKey']
但print
給我
boto.dynamodb2.exceptions.UnknownFilterTypeError: Operator 'secondKey' from 'secondKey' is not recognized.
嗯,我讀了幾遍重讀這個頁面幾次試圖讓這個工作。我知道這可以通過AWS控制檯完成,但現在我需要弄清楚如何使用'boto'以編程方式執行此操作。你能告訴我我的例子上面的確切查詢語法?謝謝順便說一句,如果我需要修改創建表的方式來完成這項工作,那也沒關係。我只需要能夠通過'firstKey'或'secondKey'來檢索項目。 –
好的你在這裏:我已經用完整的工作例子編輯了上面的答案。我剛剛嘗試過並確保它可以與Dynamo DB Local配合使用。人們面臨的一個常見問題是使用舊版本的Dynamo Local。確保你下載最新的並嘗試。我現在嘗試與dynamodb_local_2013-12-12 –
請嘗試讓我知道這是否適合你! –