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你是对的,我更新了我的答案。 –