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