コードmemo
- 入っているカラムは以下3つ
- testid → パーティションキー
- testvalue → 更新したい値
- testflag → インデックスのパーティションキー
testflag = 1
の場合のtestvalueを値を+1して更新したい
import boto3
# DynamoDBクライアントを作成
dynamodb = boto3.client('dynamodb')
# テーブル名
table_name = '【テーブル名】'
# インデックス名
index_name = 'testflag-index'
def get_value_fromdynamodb():
# 条件式
condition_expression = 'testflag = :val'
expression_attribute_values = {':val': {'N': '1'}} # test_flagが1の場合
# クエリの実行
response = dynamodb.query(
TableName=table_name,
IndexName=index_name,
KeyConditionExpression=condition_expression,
ExpressionAttributeValues=expression_attribute_values
)
# クエリ結果からアイテムを取り出してリストに格納
items = response['Items']
return items
def update_dynamodb(items):
# リストからtestvalueに+1した値でDynamoDBのテーブルを更新
for item in items:
# testvalue属性の値を取得し、1を加える
incremented_value = int(item['testvalue']['N']) + 1
# 更新式を定義
update_expression = 'SET testvalue = :val'
expression_attribute_values = {':val': {'N': str(incremented_value)}}
# アップデートの実行
dynamodb.update_item(
TableName=table_name,
Key={'testid': item['testid']}, #パーティションキーを指定
UpdateExpression=update_expression,
ExpressionAttributeValues=expression_attribute_values
)
if __name__ == "__main__":
#DynamoDBから値を取得
items = get_value_fromdynamodb()
#取得できたリストを確認
for item in items:
print(item['testvalue'])
#取得したリストに基づき値を更新
update_dynamodb(items)
コメント