如何在DynamoDB中查询一列的所有行?

时间:2019-03-05 06:43:57

标签: python amazon-dynamodb boto3

我只是在短时间内使用AWS DynamoDB。我想知道如何通过此语句(没有WHERE子句)获得相同的结果:

SELECT column1 FROM DynamoTable;

我尝试(但失败了):

 import boto3
 dynamodb = boto3.resource('dynamodb')
 table = dynamodb.Table('DynamoTable')
 from boto3.dynamodb.conditions import Key, Attr
 resp = table.query(KeyConditionExpression=Key('column1'))

它需要Key().eq()Key().begin_with() ...

我已经尝试使用resp = table.scan(),但是响应数据太多字段,而我只需要column1

谢谢。

2 个答案:

答案 0 :(得分:1)

这使您可以直接获取所需的列,而无需遍历整个数据集

import boto3

def getColumn1Items():
     dynamodb = boto3.resource('dynamodb')
     table = dynamodb.Table('DynamoTable')
     resp = table.scan(AttributesToGet=['column1'])

     return resp['Items']

答案 1 :(得分:0)

您绝对应该使用Scan operation。检查documentation以使用python来实现。

关于如何仅选择可以使用的特定属性:

import boto3

def getColumn1Items():
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('DynamoTable')
    response = table.scan()

    lst = []
    for i in response['Items']:
        lst.append(i['column1'])

    return lst

您必须遍历整个表并仅获取所需的列。