DynamoDB Put Item - Insert Data into DynamoDB Table

Learn how to insert data into a DynamoDB table using the put_item operation with Python and boto3. This guide provides a practical example for adding items to your NoSQL database.

DynamoDB Put Item Operation

Understanding the DynamoDB Put Item Operation

The put_item operation in Amazon DynamoDB is used to add a new item to a table or replace an existing item with a new one. This is a fundamental operation for managing data within your DynamoDB tables. When you use put_item, you provide the complete item attributes. If an item with the same primary key already exists, it will be overwritten. This guide demonstrates how to perform this operation using the AWS SDK for Python, boto3.

Python Example for DynamoDB Put Item

Below is a Python script that utilizes the boto3 library to insert an item into a DynamoDB table named 'gamescores'. This example assumes you have a local DynamoDB instance running or have configured your AWS credentials and region correctly.

import boto3
import time

# Initialize the DynamoDB client.
# Replace 'eu-west-1' with your desired AWS region.
# For local testing, endpoint_url should point to your local DynamoDB instance.
client = boto3.Session(region_name='eu-west-1').client(
    'dynamodb',
    aws_access_key_id='',  # Replace with your AWS Access Key ID or leave empty for default credentials
    aws_secret_access_key='', # Replace with your AWS Secret Access Key or leave empty for default credentials
    endpoint_url='http://localhost:4567' # Uncomment and set if using a local DynamoDB instance
)

# Define the item to be put into the table.
# Each attribute must be specified with its data type (e.g., 'S' for String, 'N' for Number).
item_to_put = {
    'event': {'S': 'gaming_nationals_zaf'},
    'timestamp': {'S': '2019-02-08T14:53'},
    'score': {'N': '11885'},
    'name': {'S': 'will'},
    'gamerid': {'S': 'wilson9335'},
    'game': {'S': 'counter strike'},
    'age': {'N': '27'},
    'rank': {'S': 'professional'},
    'location': {'S': 'sweden'}
}

try:
    # Execute the put_item operation.
    response = client.put_item(
        TableName='gamescores',
        Item=item_to_put
    )

    # Wait a moment to ensure the operation is processed, especially in local testing.
    time.sleep(2)
    print("Item successfully put into DynamoDB.")
    print("Response:", response)

except Exception as e:
    print(f"An error occurred: {e}")

Key Concepts and Best Practices

When using put_item, consider the following:

  • Primary Key: Ensure the item includes all attributes that constitute the primary key of the table.
  • Data Types: DynamoDB is a schemaless database, but you must specify the data type for each attribute (e.g., 'S' for String, 'N' for Number, 'BOOL' for Boolean, 'M' for Map, 'L' for List).
  • Overwriting: Be aware that put_item will overwrite an existing item if the primary key matches. If you need conditional writes, consider using put_item with a ConditionExpression or using the update_item operation.
  • Error Handling: Always implement robust error handling to manage potential issues like network errors, throttling, or invalid data.

Further Resources