Boto DynamoDB2条件put_item

nic*_*lee 5 python conditional put boto

我想在实际添加新项目之前让put_item检查是否存在具有相同HashKey的项目.

根据boto DynamoDB2文档,可以使用"Conditional Put"进行操作.

我尝试了以下命令,但没有运气.

connection.put_item('table',item={'locationId':'a1', 'timestamp': time.time()}, expected={'locationID':False})
Run Code Online (Sandbox Code Playgroud)

错误消息如下.

boto.exception.JSONResponseError: JSONResponseError: 400 Bad Request
{u'Message': u'Expected null', u'__type': u'com.amazon.coral.service#SerializationException'}
Run Code Online (Sandbox Code Playgroud)

有没有人有DynamoDBv2的条件放?

感谢所有提前.

moo*_*odh 7

您需要像这样编写它才能使语法正常工作.在任何地方都没有记录这是非常糟糕的.我只是遇到了完全相同的问题,并且在挖掘Java SDK文档时必须尝试50种不同的东西才能工作.请注意,如果您想要使用'Exists': True而不是,则需要给出一个值False.

connection.put_item(
    'table',
    item={
        'locationId':{'S': 'a1'},
        'timestamp': {'N': str(time.time())
    },
    expected={
        'locationID': {'Exists': False}
    }
    #expected={
    #    'locationID': {'Exists': True, 'Value': {'N': '0'}}
    #}
)
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

编辑:帮助我使用语法足以使其在boto集成测试中工作编码的问题