【AWS】boto3でDynamoDBを操作するときによく使うメソッド

大瀧

2024.01.04

7

この記事では、boto3でDynamoDBを操作するときによく使用するが忘れやすいものをピックアップして記載します。

※随時追記予定です。

 

公式のドキュメントはこちら

https://boto3.amazonaws.com/v1/documentation/api/latest/index.html

アイテムの追加

DynamoDB.Table.put_item():

アイテムをテーブルに1件追加したい場合にはput_item()を使用します。

table.put_item(
   Item={
        'username': 'janedoe',
        'first_name': 'Jane',
        'last_name': 'Doe',
        'age': 25,
        'account_type': 'standard_user',
    }
)


複数アイテムの追加

DynamoDB.Table.batch_writer():

一度に大量のデータをロードする場合は、batch_writer()を利用すると、プロセスを高速化し、サービスに対する書き込みリクエストの数を減らすことができます。

DynamoDBは一度にputできる数が最大25という制限がありますが、boto3のbatch_writer()を使えば、特に気にすることなくよしなにやってくれます。


with table.batch_writer() as batch:
  batch.put_item(
    Item={
      'account_type': 'standard_user',
      'username': 'johndoe',
      'first_name': 'John',
      'last_name': 'Doe',
      'age': 25,
      'address': {
        'road': '1 Jefferson Street',
        'city': 'Los Angeles',
        'state': 'CA',
        'zipcode': 90001
      }
    }
  )
  batch.put_item(
    Item={
      'account_type': 'super_user',
      'username': 'janedoering',
      'first_name': 'Jane',
      'last_name': 'Doering',
      'age': 40,
      'address': {
        'road': '2 Washington Avenue',
        'city': 'Seattle',
        'state': 'WA',
        'zipcode': 98109
      }
    }
  )
  batch.put_item(
    Item={
      'account_type': 'standard_user',
      'username': 'bobsmith',
      'first_name': 'Bob',
      'last_name''Smith',
      'age': 18,
      'address': {
        'road': '3 Madison Lane',
        'city': 'Louisville',
        'state': 'KY',
        'zipcode': 40213
      }
    }
  )
  batch.put_item(
    Item={
      'account_type': 'super_user',
      'username': 'alicedoe',
      'first_name': 'Alice',
      'last_name': 'Doe',
      'age': 27,
      'address': {
        'road': '1 Jefferson Street',
        'city': 'Los Angeles',
        'state': 'CA',
        'zipcode': 90001
      }
    }
  )

アイテムの取得

DynamoDB.Table.get_item():

アイテムを1件取得するにはget_item()を使用します。

response = table.get_item(
  Key={
    'username': 'janedoe',
    'last_name': 'Doe'
  }
)
item = response['Item']
print(item)

複数アイテムの取得

DynamoDB.Table.query():

ハッシュキー、ソートキー、GSIで検索する場合にはKeyを使用します。

response = table.query(
    KeyConditionExpression=Key('username').eq('johndoe')
)
items = response['Items']
print(items)


DynamoDB.Table.scan():

ハッシュキー、ソートキー、GSI以外で検索する場合にはAttrを使用します。

MySQLなどのIN句に相当する is_in はscan()でのみ使用可能です。

response = table.scan(
    FilterExpression=Attr('age').lt(27)
)
items = response['Items']
print(items)


この記事をシェアする