添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
路过的大象  ·  Apache OpenOffice ...·  1 周前    · 
想出国的豆腐  ·  PostgreSQL Python: ...·  6 天前    · 
谦逊的楼梯  ·  Introduction to plottable·  3 天前    · 
睿智的钢笔  ·  Plots in plottable·  3 天前    · 
温柔的苹果  ·  GitHub - ...·  2 天前    · 
瘦瘦的洋葱  ·  FAQ·  6 月前    · 
礼貌的高山  ·  spring-boot +data ...·  9 月前    · 

How To Insert Into a DynamoDB Table with Boto3

Looking for an example of how to Insert a record into your DynamoDB Table using Python Boto3? This is the article for you .

Note that the full code is available at the bottom of this article.

Before you start, remember that you need proper IAM Permissions in order to interact with DynamoDB. For inserting, you require the dynamodb:PutItem permision. Make sure that the user or role you are using has this permission. If you don’t know how to create an IAM user/role with a policy, check out my YouTube tutorial here .

Check out other Python DynamoDB Based Operation Articles here:

  1. How To Query DynamoDB with Boto3
  2. How To Delete an Item in a DynamoDB Table with Boto3
  3. How To Delete Multiple Items at Once in a DynamoDB Table with Boto3

First we need to import boto3 , which is the Python SDK that allows us to interact with DynamoDB APIs.

import boto3

Next we need to get a reference to the DynamoDB resource using the below code snippet.

Note that we are using the DynamoDB resource and not the client object. The resource object offers higher level APIs which make it easier to access It is also the more modern way of interacting with Dynamo. However, resource may not always be completely up to date and you can alternatively use the client. The client offers more verbose lower level APIs. I personally suggest you use the resource object for all your interactions with Dynamo.

dynamodb = boto3.resource('dynamodb')

Next up we need to get a reference to our DynamoDB table using the following lines. Note that I am using a Lambda function (an AWS service) to interact with Dynamo. But you certainly don’t need to.

def lambda_handler(event, context):
    table = dynamodb.Table('Countries')

Now we can perform our insert operation.

Note that you may need to do some pre-processing of your data to get it ready for the insert. The neat part of using the resource object is that it will automatically convert your Python primitives into the correct corresponding DynamoDB types. For example, if you provide it with a python integer, it will automatically use the Number field as the type of DynamoDB. The same applies with Strings, Lists, Booleans, etc.

To perform the insert, we use the PutItem API as seen below:

    response = table.put_item(
        Item={
            'CountryName': 'Canada',
            'Population': 30000000
    )

Note that running this code multiple times will overwrite the record. If you’re just looking to update a field of an existing object you should use the UpdateItem API which I will have another article for.

After running the code above, you should see the record in your DynamoDB table as seen below.

After running the code, our DynamoDB table now shows the new record.

Before you’re done, you’ll want to examine the HTTP status code in the response object to ensure the operation was successful. We’re looking for a 200 OK status code. You can check for it by using the following code:

    status_code = response['ResponseMetadata']['HTTPStatusCode']

You may also want to print out the response object to take a look at some of its other properties. It contains interesting things such as the number of internal retries dynamo performed (if required) and the requestId.

And here’s the full code putting all these snippets together:

import boto3
dynamodb = boto3.resource('dynamodb')
def lambda_handler(event, context):
    table = dynamodb.Table('Countries')
    response = table.put_item(
        Item={
            'CountryName': 'Canada',
            'Population': 30000000