список запросов boto3 возвращает только последний результат - PullRequest
0 голосов
/ 04 августа 2020

Поскольку я настроил несколько профилей в файле .aws / credentials. Мне нужно прочитать файл, содержащий список ключей, которые будут использоваться в качестве параметра в запросе boto3 Dynamodb. Итак, мой код выглядит так:

import boto3
from boto3.dynamodb.conditions import Key

def query_keys(dynamodb, bucketAndKey):
    table = dynamodb.Table('media-import-address')
    response = table.query(
        KeyConditionExpression=Key('bucketAndKey').eq(bucketAndKey)
    )
    return response['Items']

if __name__ == '__main__':
    file_name = input("Enter your file name: ")
    dynamodb = boto3.Session(profile_name='prod-cn').resource('dynamodb')
    with open(file_name) as f:
        lines = f.readlines()
        for line in lines:
            result = query_keys(dynamodb, line)
            print(result)

Мой входной файл представляет собой простой текстовый файл, который выглядит так: aaa / ab c .jpg aaa / bbb.png abc / aa.gif

Результат выполнения выглядит так:

[]
[]
[{'seq': Decimal('2'), 'schemaVersion': Decimal('1'), 'media': 'MDAVD'}]

Почему предыдущие 2 не выполняются?

1 Ответ

1 голос
/ 04 августа 2020

Вероятная причина в том, что ваш line будет включать символ новой строки (например, \n). Таким образом, он будет искать bucketAndKey с \n в конце.

Чтобы удалить \n из строки, вы можете проверить следующее:

result = query_keys(dynamodb, line.rstrip())
...