【问题标题】:python dynamodb get 1000 entriespython dynamodb 获得 1000 个条目
【发布时间】:2014-12-20 21:05:25
【问题描述】:

我正在使用 amazon dynamodb 并通过 python boto 查询界面访问它。我有一个非常简单的要求

  1. 我想获得 1000 个条目。但我事先并不知道主键。我只想获得1000个条目。我怎样才能做到这一点? ...我知道如何使用 query_2,但这需要事先知道主键。

  2. 也许之后我想获得另一个不同的 1000 并继续这样。您可以将其视为无需替换的抽样。我该怎么做?

非常感谢任何帮助。

【问题讨论】:

  • 根据什么获得 100 个条目?您的表结构是什么?您要获取哪些属性?
  • 我有(主键)patient_id,segment_id。而已。主要的一点是我事先不知道patient_id。我只想获取前 1000 个条目,然后是下一个 1000 个条目。它基本上是没有替换的采样。

标签: python amazon-dynamodb boto sample


【解决方案1】:

使用Table.scan(max_page_size=1000)

【讨论】:

  • 如何得到下1000个结果?
【解决方案2】:

获取所有主键。

def get_all_primary_keys():
    ddb_client = boto3.client('dynamodb')
    primary_keys= []
    count = 0
    r = ddb_client.scan(
        TableName='your_TABLE',
        Select='SPECIFIC_ATTRIBUTES',
        AttributesToGet=[
            'your_primary_key',
        ],
    )
    count += r['Count']
    for i in r['Items']:
        primary_keys .append(i['your_primary_key']['S'])
    '''discards data after 1MB, hence the following code'''
    while True:
        try:
            r = ddb_client.scan(
                TableName='your_TABLE',
                Select='SPECIFIC_ATTRIBUTES',
                AttributesToGet=[
                    'your_primary_key',
                ],
                ExclusiveStartKey={
                    'your_primary_key': {
                        'S': r['LastEvaluatedKey']['your_primary_key']['S']
                    }
                }
            )
            count += r['Count']
            for i in r['Items']:
                primary_keys .append(i['your_primary_key']['S'])
        except KeyError as e:
            print e
            break
    return primary_keys

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多