5

実際に新しいアイテムを追加する前に、同じ HashKey を持つアイテムがあるかどうかを確認するために put_item を使用しようとしています。

boto DynamoDB2のドキュメントによると、「Conditional Put」で可能です。

次のコマンドを試しましたが、うまくいきませんでした。

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

エラーメッセージは以下の通りです。

boto.exception.JSONResponseError: JSONResponseError: 400 Bad Request
{u'Message': u'Expected null', u'__type': u'com.amazon.coral.service#SerializationException'}

DynamoDBv2 で条件付きプットを持っている人はいますか?

事前にすべてに感謝します。

4

2 に答える 2

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'}}
    #}
)

それが役に立てば幸い!

編集:boto統合テストで動作させてコーディングするのに十分な構文で私を助けた質問

于 2013-10-01T13:23:30.073 に答える