我是 boto3 的新用户,我正在使用 DynamoDB
.
I'm a new user in boto3 and i'm using DynamoDB
.
我浏览了 DynamoDB api,但找不到任何方法可以告诉我表是否已经存在.
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?
我应该尝试创建一个新表并使用 try catch 包装它吗?
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
如果表已经存在.用 try 包裹 create_table 方法来捕捉它ResourceNotFoundException
如果您请求的表名不存在.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.
我看到有些人发现很难捕捉到异常.我会在下面放一些代码让你知道如何处理boto3中的异常.
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.
示例 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
示例 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,
)
示例 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
这篇关于如何检查 DynamoDB 表是否存在?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!