AWS Amazon DynamoDB のpython boto3によるqueryの書き方・記述・実行方法の例・サンプル・Exampleについて

AWS,DynamoDB

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