Bott3のput_item
に、DynamoDBのオブジェクトを置き換えるための問題があります(一部の属性がDynamoDBテーブルの主キーであり、一部がそうでないものが挿入している新しいオブジェクトと一致する場合)。テーブルに入れます。例えばオブジェクトに特定の属性が存在する場合、Boto3を使用して、put_itemを取得してDynamoDBのオブジェクトを置き換えますか?
、DynamoDBのテーブルは、その中にある場合:
user (Partition Key) | ts (Sort Key) | height | weight
__________________________________________________________________________________
'fred' 01-01-2017 5'10'' 190
'george' 01-02-2017 5'08'' 200
と、私はこのテーブルに新しい行を追加しようとしています:ユーザーfred
に基づいて
'fred' 01-01-2018 5'10'' 200
と高さ5'10''
がすでにテーブルに入っている別のユーザーと一致している場合は、古いエントリの新しいエントリを使用したいと思います。 boto3とAWS put_itemのドキュメントは少し不明です。どうすればいいですか?
参考のために、これは私が現在持っているものです。
tracking_result = tracking_dbs[drivetype].put_item(
Item=track,
# insert fields to remove old entry that matches
# up with certain attributes from new entry here
)
ありがとうございました!スキャンせずにこれを行う方法はありますか?可能であれば、DB上でO(n)操作をしないようにしたいと思います。 –
ソートキーが必要ですか?そうでない場合、テーブルに大量のデータがない場合は、そのテーブルを削除し、パーティションキー(ユーザー)のみを使用し、並べ替えキーを使用せずに新しいテーブルを作成します。 put_itemはあなたが望むように動作します。 –