如果指定了全名,为什么不返回匹配的表?

2024-05-28 20:01:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习DynamoDB,我发现自己需要一个脚本来检查一个特定的表是否存在,然后再进行其他操作。我正在使用Python和boto3模块。你知道吗

我已经有一张叫“cartracker”的桌子了。如果我:

client = boto3.client('dynamodb')
client.list_tables(ExclusiveStartTableName='cartracker')

结果是('TableNames'为空):

{'TableNames': [], 'ResponseMetadata': {'RequestId': 'MEKJ80167PEHUABC8DDVS70B4VVV4KQNSO5AEMVJF66Q9ASUAAJG', 'HTTPHeaders': {'content-type': 'application/x-amz-json-1.0', 'x-amz-crc32': '1315925753', 'server': 'Server', 'date': 'Tue, 31 Oct 2017 17:49:08 GMT', 'content-length': '17', 'x-amzn-requestid': 'MEKJ80167PEHUABC8DDVS70B4VVV4KQNSO5AEMVJF66Q9ASUAAJG', 'connection': 'keep-alive'}, 'RetryAttempts': 0, 'HTTPStatusCode': 200}}

但是,如果我传递一个部分字符串(注意cartrack中缺少r):

client = boto3.client('dynamodb')
client.list_tables(ExclusiveStartTableName='cartracke')

然后我得到了我所期望的('TableNames'被填充):

{'TableNames': ['cartracker'], 'ResponseMetadata': {'RequestId': 'FN7JH1JNFC1RNJHVFD15CM23KJVV4KQNSO5AEMVJF66Q9ASUAAJG', 'HTTPHeaders': {'content-type': 'application/x-amz-json-1.0', 'x-amz-crc32': '505128313', 'server': 'Server', 'date': 'Tue, 31 Oct 2017 17:49:12 GMT', 'content-length': '29', 'x-amzn-requestid': 'FN7JH1JNFC1RNJHVFD15CM23KJVV4KQNSO5AEMVJF66Q9ASUAAJG', 'connection': 'keep-alive'}, 'RetryAttempts': 0, 'HTTPStatusCode': 200}}

我不知道它为什么要这样做,而且它感觉很不舒服。我看不到任何文件表明这是正常的。你知道吗


Tags: clienttablestypecontentboto3dynamodblistamz
1条回答
网友
1楼 · 发布于 2024-05-28 20:01:27

如果您以前调用过list\u tables(),并且它返回了更多可用结果的指示(在LastEvaluatedTableName中),则只能使用ExclusiveStartTableName参数。这是AWS-sdk用于分页的一般模式,当结果多于单个API调用可以合理返回的结果时。通常,您最初会调用list\u tables(),不带任何参数。你知道吗

但是,在您的例子中,只需调用describe_table()即可获得感兴趣的特定表。或者您可以使用零参数调用list\u tables(),但这也可能返回其他表。你知道吗

相关问题 更多 >

    热门问题