I'm a new user in boto3 and i'm using DynamoDB
.
I went through over the DynamoDB api and I couldn't find any method which tell me if a table is already exists.
What is the best approach dealing this issue?
Should I try to create a new table and wrap it using try catch ?
From reading the documentation, I can see that there are three methods by which you can check if a table exists.
ResourceInUseException
if the table already exists. Wrap the create_table method with try except to catch thisResourceNotFoundException
if the table name you request doesn't exist.To me, the first option sounds better if you just want to create a table.
Edit: I see that some people are finding it difficult to catch the exceptions. I will put some code below for you to know how to handle exceptions in boto3.
Example 1
import boto3 dynamodb_client = boto3.client('dynamodb') try: response = dynamodb_client.create_table( AttributeDefinitions=[ { 'AttributeName': 'Artist', 'AttributeType': 'S', }, { 'AttributeName': 'SongTitle', 'AttributeType': 'S', }, ], KeySchema=[ { 'AttributeName': 'Artist', 'KeyType': 'HASH', }, { 'AttributeName': 'SongTitle', 'KeyType': 'RANGE', }, ], ProvisionedThroughput={ 'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5, }, TableName='test', ) except dynamodb_client.exceptions.ResourceInUseException: # do something here as you require pass
Example 2
import boto3 dynamodb_client = boto3.client('dynamodb') table_name = 'test' existing_tables = dynamodb_client.list_tables()['TableNames'] if table_name not in existing_tables: response = dynamodb_client.create_table( AttributeDefinitions=[ { 'AttributeName': 'Artist', 'AttributeType': 'S', }, { 'AttributeName': 'SongTitle', 'AttributeType': 'S', }, ], KeySchema=[ { 'AttributeName': 'Artist', 'KeyType': 'HASH', }, { 'AttributeName': 'SongTitle', 'KeyType': 'RANGE', }, ], ProvisionedThroughput={ 'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5, }, TableName=table_name, )
Example 3
import boto3 dynamodb_client = boto3.client('dynamodb') try: response = dynamodb_client.describe_table(TableName='test') except dynamodb_client.exceptions.ResourceNotFoundException: # do something here as you require pass
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With