How to check if DynamoDB table exists?(如何检查 DynamoDB 表是否存在?)
问题描述
我是 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.
- CreateTable API 引发错误
ResourceInUseException
如果表已经存在.用 try 包裹 create_table 方法来捕捉它 - 您可以使用 ListTables API 获取与当前帐户和端点关联的表名列表.检查您在响应中获得的表名列表中是否存在该表名.
- DescribeTable API 会抛出错误
ResourceNotFoundException
如果您请求的表名不存在.
- The CreateTable API throws an error
ResourceInUseException
if the table already exists. Wrap the create_table method with try except to catch this - You can use the ListTables API to get the list of table names associated with the current account and endpoint. Check if the table name is present in the list of table names you get in the response.
- The DescribeTable API will throw an error
ResourceNotFoundException
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 表是否存在?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何检查 DynamoDB 表是否存在?
基础教程推荐
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 筛选NumPy数组 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01