タイトル : DynamoDB 書き込み/読み込み localstackを試そう 2024
更新日 : 2025-01-01
カテゴリ : プログラミング
DynamoDBにデータを書いてみよう、読んでみよう
ソース
import boto3
from boto3.dynamodb.types import TypeSerializer
# 型ヒント
from mypy_boto3_dynamodb import DynamoDBClient
# クライアントの用意
dd_client: DynamoDBClient = boto3.client(
"dynamodb",
)
# テーブル名
TABLE_NAME = "ProcTable"
# データ用意
p_date = "20250101"
proc_id = "proc001"
shop_id = "shop001"
clerk_id = "c001"
proc_content = {"type": "GET", "status": "OK", "messaee": "XXX"}
# boto3のDynamoDB用のJSON変換シリアライザー用意
serializer = TypeSerializer()
# シリアライズ
proc_content4dd = {k: serializer.serialize(v) for k, v in proc_content.items()}
# 書き込み
res_put = dd_client.put_item(
TableName=TABLE_NAME,
Item={
"PDate": {"S": p_date},
"ProcId": {"S": proc_id},
"ShopId": {"S": shop_id},
"ClerkId": {"S": clerk_id},
"ProcContent": {"M": proc_content4dd},
},
)
print(f"PUT : {res_put}")
# 読み込み
res_get = dd_client.get_item(
TableName=TABLE_NAME, Key={"PDate": {"S": "20250101"}, "ProcId": {"S": "proc001"}}
)
print(f"GET : {res_get}")
実行例
$ python test_put_01.py
PUT : {'ResponseMetadata': {'RequestId': '1c136b49-9cb5-49d2-ba4c-2598eeaaf5ca', 'HTTPStatusCode': 200,
'HTTPHeaders': {'server': 'TwistedWeb/24.3.0', 'date': 'Wed, 01 Jan 2025 10:29:10 GMT', 'content-type':
'application/x-amz-json-1.0', 'content-length': '2', 'x-amzn-requestid': '1c136b49-9cb5-49d2-ba4c-2598eeaaf5ca',
'x-amz-crc32': '2745614147'}, 'RetryAttempts': 0}}
GET : {'Item': {'PDate': {'S': '20250101'}, 'ClerkId': {'S': 'c001'}, 'ShopId': {'S': 'shop001'}, 'ProcId': {'S': 'proc001'},
'ProcContent': {'M': {'type': {'S': 'GET'}, 'status': {'S': 'OK'}, 'messaee': {'S': 'XXX'}}}},
'ResponseMetadata': {'RequestId': '3119ece4-2b9f-4ba3-8f3f-fc35f7dc20a3', 'HTTPStatusCode': 200,
'HTTPHeaders': {'server': 'TwistedWeb/24.3.0', 'date': 'Wed, 01 Jan 2025 10:29:10 GMT',
'content-type': 'application/x-amz-json-1.0', 'content-length': '214', 'x-amzn-requestid': '3119ece4-2b9f-4ba3-8f3f-fc35f7dc20a3',
'x-amz-crc32': '603211072'}, 'RetryAttempts': 0}}
$
この作業中に使っていたCLIコマンド
aws dynamodb scan --table-name ProcTable
aws dynamodb scan --table-name ProcTable --select "COUNT"
aws dynamodb delete-item --table-name ProcTable --key '{"PDate": {"S": "20250101"},"ProcId": {"S": "proc001"}}'