📘

PythonでDynamoDBのCRUD操作を実践【最終回】

2024/11/20に公開

こんにちは!このシリーズもいよいよ第3回目です。これまでの記事で、以下を学んできました。

第1回:WSL、Docker、Pythonの導入

第2回:DockerでDynamoDBをローカルに構築し、Pythonで接続

今回は、Pythonを使ってDynamoDBのCRUD操作を実践します!簡単なサンプルアプリケーションを通じて、DynamoDBの操作方法を学んでいきましょう。

1. CRUDとは?

CRUDはデータベース操作の基本で、以下の操作を指します。

Create: データの作成
Read: データの読み取り
Update: データの更新
Delete: データの削除
今回は、これらをPythonコードで順番に実装していきます。

2. サンプルアプリケーションの準備

まず、前回作成したDynamoDBテーブル(TestTable)を引き続き使用します。

前提条件

DynamoDBローカル環境が起動している(docker runコマンドで起動済み)。
Python仮想環境が有効化されている(source venv/bin/activate)。
必要なライブラリがインストールされている。

pip install boto3
3. CRUD操作の実装
3.1 データの作成(Create)

以下のコードでデータを挿入します。

import boto3

# DynamoDBクライアントの設定
dynamodb = boto3.resource(
    'dynamodb',
    endpoint_url='http://localhost:8000',
    region_name='us-west-2',
    aws_access_key_id='dummy',
    aws_secret_access_key='dummy'
)

# テーブルを指定
table = dynamodb.Table('TestTable')

# データの作成
def create_item():
    table.put_item(
        Item={
            'id': '001',
            'name': 'Alice',
            'age': 25
        }
    )
    print("Item created successfully!")

create_item()

3.2 データの読み取り(Read)

次に、特定のデータを取得します。


# データの取得
def read_item():
    response = table.get_item(
        Key={
            'id': '001'
        }
    )
    item = response.get('Item', {})
    print("Retrieved item:", item)

read_item()

3.3 データの更新(Update)

次に、既存のデータを更新します。


# データの更新
def update_item():
    table.update_item(
        Key={
            'id': '001'
        },
        UpdateExpression="SET age = :age",
        ExpressionAttributeValues={
            ':age': 30
        },
        ReturnValues="UPDATED_NEW"
    )
    print("Item updated successfully!")

update_item()

3.4 データの削除(Delete)

最後に、データを削除します。


# データの削除
def delete_item():
    table.delete_item(
        Key={
            'id': '001'
        }
    )
    print("Item deleted successfully!")

delete_item()
  1. CRUD操作のまとめ
    これでCRUD操作の基本を学ぶことができました!今回のコードを基に、より複雑な操作やエラー処理を追加して、アプリケーションを発展させてみてください。

次のステップとして、以下のような応用を考えてみるのも良いでしょう。

AWSの実際のDynamoDBを使ったデプロイ
FlaskやFastAPIを使った簡単なAPIの作成
データの集計や高度な検索クエリの実装

Discussion