いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「DynamoDBをPythonで操作する具体的な方法を知りたい」とお考えではありませんか?
AWSのDynamoDBはNoSQLデータベースで、Lambda関数などのサーバーレスアプリケーションと組み合わせて使われることが多いです。
boto3を使えば、Pythonのコードから直接DynamoDBのデータ操作が可能です。



サクッと解説します。
ということで、本記事ではDynamoDBをPython(boto3)でCRUD操作する方法を解説します。



すぐ読み終わるので、ぜひ最後まで読んでくださいませ。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【AWS】DynamoDBをPython(boto3)でCRUD操作する方法
早速ですが、DynamoDBをPython(boto3)でCRUD操作する方法を解説します。
boto3のセットアップ
まずは、boto3のセットアップをします。
pipコマンドでboto3をインストールします。
pip install boto3AWS CLIのaws configureコマンドでアクセスキーとシークレットキーを設定します。
環境変数AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYで設定する方法もあります。



EC2やLambda上で実行する場合は、IAMロールを付与しておけばアクセスキーの設定自体が不要になります。
テーブルへの接続
boto3.resource(“dynamodb”)でDynamoDBリソースを取得します。
Tableメソッドにテーブル名を渡すと、対象テーブルを操作できるオブジェクトを取得できます。
import boto3
dynamodb = boto3.resource("dynamodb", region_name="ap-northeast-1")
table = dynamodb.Table("Users")データの登録(Create)
put_itemメソッドで、テーブルに新しいデータを登録します。
table.put_item(
Item={
"user_id": "u001",
"name": "Taro Yamada",
"age": 30
}
)put_itemメソッドは、同じキーのデータが既に存在する場合に上書きしてしまう点に注意が必要です。
既存データの上書きを防ぐには、ConditionExpressionにattribute_not_exists関数を指定します。
from botocore.exceptions import ClientError
try:
table.put_item(
Item={
"user_id": "u001",
"name": "Taro Yamada",
"age": 30
},
ConditionExpression="attribute_not_exists(user_id)"
)
except ClientError as e:
print(e.response["Error"]["Message"])


ConditionExpressionを使うと、重複チェックのコードを別途書かなくて済むので便利です。
データの取得(Read)
get_itemメソッドで、プライマリキーを指定して1件のデータを取得します。
response = table.get_item(
Key={"user_id": "u001"}
)
item = response.get("Item")
print(item)複数件のデータを条件付きで取得したい場合は、queryメソッドを使います。
queryメソッドを使うには、boto3.dynamodb.conditionsモジュールのKeyクラスをインポートします。
from boto3.dynamodb.conditions import Key
response = table.query(
KeyConditionExpression=Key("user_id").eq("u001")
)
items = response["Items"]テーブル全体のデータを取得したい場合はscanメソッドを使いますが、テーブル全件をスキャンするため大量データでは処理コストが高くなる点に注意が必要です。
データの更新(Update)
update_itemメソッドで、既存データの一部の属性を更新します。
table.update_item(
Key={"user_id": "u001"},
UpdateExpression="SET age = :age_val",
ExpressionAttributeValues={":age_val": 31},
ReturnValues="UPDATED_NEW"
)nameのようにDynamoDBの予約語と重複する属性名を更新する場合は、ExpressionAttributeNamesでプレースホルダーを指定します。
table.update_item(
Key={"user_id": "u001"},
UpdateExpression="SET #n = :name_val",
ExpressionAttributeNames={"#n": "name"},
ExpressionAttributeValues={":name_val": "Jiro Suzuki"}
)データの削除(Delete)
delete_itemメソッドで、プライマリキーを指定してデータを削除します。
table.delete_item(
Key={"user_id": "u001"}
)


削除条件を付けたい場合も、put_itemと同様にConditionExpressionを指定できます。
数値を扱う際の注意点
DynamoDBのPython SDKはfloat型を直接受け付けず、Decimal型への変換が必要です。
from decimal import Decimal
table.put_item(
Item={
"user_id": "u002",
"price": Decimal("19.99")
}
)float型のままput_itemを実行するとTypeErrorが発生するため、Decimal型への変換を忘れないようにします。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【厳選】フリーランスエンジニアにおすすめなエージェント3選


フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。
僕が実際に利用しているおすすめエージェントを紹介しますね。



エージェントは必ず複数登録してください。
担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…
僕は実際に5つのエージェントを使い回していますよ。
フリーランスを始めるなら「レバテックフリーランス


」
- 業界最大級の案件数。
- 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
- 案件参画中のフォローの充実。
※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。
レバテックフリーランス
![]()
![]()
とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!



僕もはじめてフリーランスの案件を貰ったのはレバテックフリーランス
![]()
![]()
保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。
手厚い保障を重視したいなら「Midworks


」
- 手厚い保障で正社員並みの安心感。
- 還元率60%超え&単価公開でクリアな契約。
- 給与保障制度(審査あり)。
Midworks
![]()
![]()
フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。



僕も何度か案件を紹介してもらいました。
自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。
週2〜3日の案件探しなら「ITプロパートナーズ


」
- IT案件に特化したフリーランスエージェント。
- 週2〜3日の案件が豊富。
- リモート案件が多く、直エンドなので単価も高い。
※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。
ITプロパートナーズ
![]()
![]()
週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。



週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。
とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!
よくある質問
DynamoDBのテーブル自体もPythonから作成できますか?
create_tableメソッドで作成できます。
ただし本番運用では、AWS CDKやCloudFormationでテーブル定義をコードとして管理する方法が一般的です。
get_item、query、scanの違いは何ですか?
get_item・query・scanは、取得できる範囲が異なります。
- get_item:プライマリキーを指定した1件取得
- query:パーティションキー条件に一致する複数件取得
- scan:テーブル全件を読み込んでからフィルタする取得
put_itemで一部の属性を省略した場合はどうなりますか?
省略した属性はテーブルに保存されません。
DynamoDBはスキーマレスなNoSQLデータベースのため、アイテムごとに異なる属性構成を持てます。
まとめ
今回は、DynamoDBをPython(boto3)でCRUD操作する方法について解説しました。
以下が本記事のまとめになります。



最後までお読みいただき、ありがとうございました!
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
- クソおすすめ本



海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。







