3
在我的Python腳本我插入一條記錄(項目)爲DynamoDB表,但我意識到從AWS響應不包括插在實際的項目:DynamoDB插入(放)項目 - 返回創建的項目?
{'ResponseMetadata': {'HTTPHeaders': {'connection': 'keep-alive',
'content-length': '2',
'content-type': 'application/x-amz-json-1.0',
'date': 'Fri, 27 Jan 2017 23:31:22 GMT',
'server': 'Server',
'x-amz-crc32': '234324243',
'x-amzn-requestid': 'xxxxxxxxxx'},
'HTTPStatusCode': 200,
'RequestId': 'xxxxxxxxxx',
'RetryAttempts': 0}}
這是不幸的,因爲我有這樣的邏輯:
if not user.exists():
user = create_user()
else:
user = get_user()
user.do_something()
我寧願不做另一次往返只是爲了得到我剛插入的用戶對象。
我當然可以模擬對象,因爲在Python中使用boto3
user
對象只是一個類似字典的東西,但能夠使用單個表示很好。此外,它似乎像put_item
電話
r = user_table.put_item(Item={'user_id': uid, 'info' : { ... }})
應該能夠返回put'd項目?或者其他一些端點可以嗎?
感謝您的任何見解!
雖然我很困惑,但文檔明確指出:「ReturnValues參數被多個DynamoDB操作使用;但是,PutItem不會識別除NONE或ALL_OLD以外的任何值。」我知道你說PutItem確實接受'ALL_NEW'。那麼文檔是否過時了? – guival
其實,我發現了一個[open issue](https://github.com/boto/boto3/issues/1150)。它看起來像'ALL_NEW'畢竟對put_item無效,或者我錯過了什麼? – guival
@guival你是對的,我更新了我的答案。 –