Boto3でDynamoDBをScanしてみたの続き。
DyanmoDBにデータを追加してみる。
やってみた
put_itemでデータを追加してみる。
put_itemは、プライマリキーで追加するレコードを指定し、存在しないプライマリキーであれば新規追加、存在するプライマリキーであれば更新が行える。
新規追加
存在しないプライマリキーでput_itemしてみる。
from flask import Flask import boto3 app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Hello world!</p>" @app.route("/dynamodb_scan/") def dynamodb_scan(): client = boto3.client("dynamodb") response = client.scan( TableName="temp" ) return response # ↓今回追加した箇所 @app.route("/dynamodb_put/") def dynamodb_put(): client = boto3.client("dynamodb") response = client.put_item( TableName="temp", Item = { "target": { # pk "S": "pineapple", }, "color": { "S": "yellow", } } ) return response # ↑今回追加した箇所 if __name__ == "__main__": app.run(debug=True)
無事、HTTPStatusCode
に200
が返却された。
{ "ResponseMetadata": { "HTTPHeaders": { "connection": "keep-alive", "content-length": "2", "content-type": "application/x-amz-json-1.0", "date": "Fri, 15 Mar 2024 01:38:06 GMT", "server": "Server", "x-amz-crc32": "2745614147", "x-amzn-requestid": "KKT5O9UGS4H6RQUVH82H7PMSCFVV4KQNSO5AEMVJF66Q9ASUAAJG" }, "HTTPStatusCode": 200, "RequestId": "KKT5O9UGS4H6RQUVH82H7PMSCFVV4KQNSO5AEMVJF66Q9ASUAAJG", "RetryAttempts": 0 } }
追加されたItemをscanで確認してみる。putしたItemが追加されている。
{ "Count": 3, "Items": [ { "color": { "S": "yellow" }, "target": { "S": "banana" } }, { "color": { "S": "red" }, "target": { "S": "apple" } }, { "color": { "S": "yellow" }, "target": { "S": "pineapple" } } ], "ResponseMetadata": { "HTTPHeaders": { "connection": "keep-alive", "content-length": "184", "content-type": "application/x-amz-json-1.0", "date": "Fri, 15 Mar 2024 01:40:35 GMT", "server": "Server", "x-amz-crc32": "2896593655", "x-amzn-requestid": "IMTUU8I25U2R8UDOF2NP7MO93BVV4KQNSO5AEMVJF66Q9ASUAAJG" }, "HTTPStatusCode": 200, "RequestId": "IMTUU8I25U2R8UDOF2NP7MO93BVV4KQNSO5AEMVJF66Q9ASUAAJG", "RetryAttempts": 0 }, "ScannedCount": 3 }
更新
存在するプライマリキーでput_itemしてみる。
from flask import Flask import boto3 app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Hello world!</p>" @app.route("/dynamodb_scan/") def dynamodb_scan(): client = boto3.client("dynamodb") response = client.scan( TableName="temp" ) return response @app.route("/dynamodb_put/") def dynamodb_put(): client = boto3.client("dynamodb") response = client.put_item( TableName="temp", Item = { "target": { # pk "S": "pineapple", }, "color": { "S": "yellow", } } ) return response # ↓今回追加した箇所 @app.route("/dynamodb_put2/") def dynamodb_put2(): client = boto3.client("dynamodb") response = client.put_item( TableName="temp", Item = { "target": { # pk "S": "pineapple", }, "color": { "S": "green", } } ) return response # ↑今回追加した箇所 if __name__ == "__main__": app.run(debug=True)
無事、HTTPStatusCode
に200
が返却された。
{ "ResponseMetadata": { "HTTPHeaders": { "connection": "keep-alive", "content-length": "2", "content-type": "application/x-amz-json-1.0", "date": "Fri, 15 Mar 2024 01:48:45 GMT", "server": "Server", "x-amz-crc32": "2745614147", "x-amzn-requestid": "MNNPDNMIGF1OGVDH3MMMOKUHHVVV4KQNSO5AEMVJF66Q9ASUAAJG" }, "HTTPStatusCode": 200, "RequestId": "MNNPDNMIGF1OGVDH3MMMOKUHHVVV4KQNSO5AEMVJF66Q9ASUAAJG", "RetryAttempts": 0 } }
追加されたItemをscanで確認してみる。pineappleのcolorがgreenに更新されている。
{ "Count": 3, "Items": [ { "color": { "S": "yellow" }, "target": { "S": "banana" } }, { "color": { "S": "red" }, "target": { "S": "apple" } }, { "color": { "S": "green" }, "target": { "S": "pineapple" } } ], "ResponseMetadata": { "HTTPHeaders": { "connection": "keep-alive", "content-length": "183", "content-type": "application/x-amz-json-1.0", "date": "Fri, 15 Mar 2024 01:49:44 GMT", "server": "Server", "x-amz-crc32": "3681714569", "x-amzn-requestid": "L3ECDIJLLETKV6R6JNNRRT8OERVV4KQNSO5AEMVJF66Q9ASUAAJG" }, "HTTPStatusCode": 200, "RequestId": "L3ECDIJLLETKV6R6JNNRRT8OERVV4KQNSO5AEMVJF66Q9ASUAAJG", "RetryAttempts": 0 }, "ScannedCount": 3 }