如何在DynamoDB2中检查表的状态?

时间:2014-02-18 19:42:12

标签: amazon-dynamodb status

我正在尝试将表单DynamoDB移动到DynamoDB2以使用具有全局二级索引的表。我需要创建一个表,然后批量写入项目。这是一个tets代码块:

from boto.dynamodb2.fields import HashKey, RangeKey, GlobalAllIndex
from boto.dynamodb2.layer1 import DynamoDBConnection
from boto.dynamodb2.table import Table
from boto.dynamodb2.items import Item
import boto

conn = DynamoDBConnection(aws_access_key_id=<MYID>,aws_secret_access_key=<MYKEY>)
tables = conn.list_tables()

table_name = 'myTable001'
if table_name not in tables['TableNames']:
    Table.create(table_name, schema=[HashKey('firstKey')], throughput={'read': 5, 'write': 2}, global_indexes=[
        GlobalAllIndex('secondKeyIndex', parts=[HashKey('secondKey')], throughput={'read': 5, 'write': 3})], connection=conn)

table = Table(table_name, connection=conn)

with table.batch_write() as batch:
    batch.put_item(data={'firstKey': 'fk01', 'secondKey':'sk001', 'message': '{"firstKey":"fk01", "secondKey":"sk001", "comments": "fk01-sk001"}'})
    # ...
    batch.put_item(data={'firstKey': 'fk74', 'secondKey':'sk112', 'message': '{"firstKey":"fk74", "secondKey":"sk012", "comments": "fk74-sk012"}'})

当我第一次使用新值table_name运行此代码时,我在块的最后一行收到以下错误:

boto.exception.JSONResponseError: JSONResponseError: 400 Bad Request
{u'message': u'Requested resource not found', u'__type': u'com.amazonaws.dynamodb.v20120810#ResourceNotFoundException'}

当我再次运行它时,它会被执行得很好。我怀疑原因很简单,当我第一次运行它时,表仍然被创建。如何在DDB2中查看表的状态?在DDB我使用table.status,但DDB2似乎没有。我该怎么用?

更新:根据最终回复here,提取表状态的正确方法是:

tdescr = conn.describe_table(tName)
print "%s" % ((tdescr['Table'])['TableStatus'])

以下是描述词典的其他元素:

for key in tdescr['Table'].keys():
    print key

GlobalSecondaryIndexes
AttributeDefinitions
ProvisionedThroughput
TableSizeBytes
TableName
TableStatus
KeySchema
ItemCount
CreationDateTime

1 个答案:

答案 0 :(得分:1)

您可以使用conn.describe_table('table')来获取有关table&amp;的详细信息。然后在返回的输出中检查TableStatus字段。

相关问题