Introduction to DynamoDB
Amazon DynamoDB is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability. It allows developers to store and retrieve any amount of data, at any scale, and serves as the backbone for many large-scale applications.
Getting Started with DynamoDB
Before diving into the API examples, ensure you have AWS SDKs installed in your application. The examples below use Python and the Boto3 library.
Creating a Table
import boto3 dynamodb = boto3.resource('dynamodb') table = dynamodb.create_table( TableName='Movies', KeySchema=[ { 'AttributeName': 'year', 'KeyType': 'HASH' }, { 'AttributeName': 'title', 'KeyType': 'RANGE' } ], AttributeDefinitions=[ { 'AttributeName': 'year', 'AttributeType': 'N' }, { 'AttributeName': 'title', 'AttributeType': 'S' } ], ProvisionedThroughput={ 'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5 } ) print("Table status:", table.table_status)
Adding an Item
table = dynamodb.Table('Movies') table.put_item( Item={ 'year': 2015, 'title': 'The Big New Movie', 'info': { 'plot': 'Nothing happens at all.', 'rating': decimal.Decimal(0) } } )
Getting an Item
response = table.get_item( Key={ 'year': 2015, 'title': 'The Big New Movie' } ) if 'Item' in response: print(response['Item']) else: print("Item not found.")
Updating an Item
table.update_item( Key={ 'year': 2015, 'title': 'The Big New Movie' }, UpdateExpression='SET info.rating = :val1', ExpressionAttributeValues={ ':val1': decimal.Decimal(5) } )
Deleting an Item
table.delete_item( Key={ 'year': 2015, 'title': 'The Big New Movie' } )
Building a Simple App with DynamoDB
Let’s put together a simple application using the APIs discussed. We’ll create a Python script to manage a movie collection database:
Code Example
import boto3 import decimal from boto3.dynamodb.conditions import Key def create_table(dynamodb=None): table = dynamodb.create_table( TableName='MoviesCollection', KeySchema=[ { 'AttributeName': 'year', 'KeyType': 'HASH' }, { 'AttributeName': 'title', 'KeyType': 'RANGE' } ], AttributeDefinitions=[ { 'AttributeName': 'year', 'AttributeType': 'N' }, { 'AttributeName': 'title', 'AttributeType': 'S' } ], ProvisionedThroughput={ 'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5 } ) return table def add_movie(year, title, plot, rating, dynamodb=None): table = dynamodb.Table('MoviesCollection') table.put_item( Item={ 'year': year, 'title': title, 'info': { 'plot': plot, 'rating': decimal.Decimal(rating) } } ) def get_movie(year, title, dynamodb=None): table = dynamodb.Table('MoviesCollection') response = table.get_item( Key={ 'year': year, 'title': title } ) return response['Item'] if 'Item' in response else None if __name__ == '__main__': dynamodb = boto3.resource('dynamodb') movie_table = create_table(dynamodb) movie_table.wait_until_exists() add_movie(2021, 'A Great Movie', 'An epic film of great proportions.', 8.5, dynamodb) movie = get_movie(2021, 'A Great Movie', dynamodb) print(movie)
This script creates a DynamoDB table, adds a movie item, and retrieves the movie details. You can expand this application by adding more functions like updating and deleting items, listing all movies, etc.
This guide provides a foundation for working with DynamoDB in Python. Dive into the AWS documentation for more detailed information on each API and advanced features.
Hash: cf99b895f350b77585881438ab38a935e68c9c7409c5adaad23fb17572ca1ea2