AWS Amazon DynamoDB のpython boto3によるqueryの書き方・記述・実行方法の例・サンプル・Exampleについて
DynamoDBにおいてqueryの操作は「DynamoDBのキー・インデックスに関するまとめ 〜ハッシュキー(パーティションキー)、レンジキー(ソートキー)、プライマリキー、ローカルセカンダリインデックス、グローバルセカンダリインデックスの説明、違い、使い方、使用方法、例題、サンプル〜」で説明したプライマリキーまたはセカンダリインデックスに対して検索を行います。
今回はそのquery検索について簡単な例を備忘録として記載しておきます。
AWS Amazon DynamoDB のpython boto3によるqueryの書き方・記述・実行方法の例・サンプル・Exampleについて
ハッシュキー(パーティションキー)のみの場合
まず、ExpressionAttributeNamesでハッシュキー(パーティションキー)の項目名「hash_key」をKeyConditionExpression内で使用する「#name0」の変数に設定します。
次にExpressionAttributeValuesでクエリで検索する値「hash_value」をKeyConditionExpression内で使用する「:value0」の変数に設定します。
KeyConditionExpressionで上記で設定した変数を用いて「#name0 = :value0」のように論理式を書きます。
import boto3
dynamodb_client = boto3.client('dynamodb', region_name='ap-northeast-1')
hash_value = "HashValue"
response = dynamodb_client.query(
TableName='DynamoDBTable',
ExpressionAttributeNames={
'#name0': 'hash_key'
},
ExpressionAttributeValues={
':value0': {'S': hash_value}
},
KeyConditionExpression='#name0 = :value0'
)
ハッシュキー(パーティションキー)とレンジキー(ソートキー)の場合
まず、ExpressionAttributeNamesでハッシュキー(パーティションキー)の項目名「hash_key」をKeyConditionExpression内で使用する「#name0」の変数に、
レンジキー(ソートキー)の項目名「range_key」をKeyConditionExpression内で使用する「#name1」の変数に設定します。
次にExpressionAttributeValuesでクエリで検索する値「hash_value」をKeyConditionExpression内で使用する「:value0」の変数に、
クエリで検索する値「range_value」をKeyConditionExpression内で使用する「:value1」の変数に設定します。
KeyConditionExpressionで上記で設定した変数を用いて「#name0 = :value0 AND #name1 = :value1」のように論理式を書きます。
import boto3
dynamodb_client = boto3.client('dynamodb', region_name='ap-northeast-1')
hash_value = "HashValue"
range_value = "1448809200"
response = dynamodb_client.query(
TableName='DynamoDBTable',
ExpressionAttributeNames={
'#name0': 'hash_key',
'#name1': 'range_key'
},
ExpressionAttributeValues={
':value0': {'S': hash_value},
':value1': {'N': range_value}
},
KeyConditionExpression='#name0 = :value0 AND #name1 = :value1'
)
Reference: Tech Blog citing related sources
