Как запросить файл json в boto3 dynamicodb? - PullRequest
0 голосов
/ 26 февраля 2020

У меня возникли проблемы с доступом к значениям ключей json объектов в динамической базе данных. Например, предположим, у меня есть следующий код:

pf = boto3.resource('dynamodb', region_name='us-west-2', ..).Table("portfolios")
from boto3.dynamodb.conditions import Key, Attr
    pf.query(KeyConditionExpression=Key('user').eq('user1'),
        FilterExpression=Attr('payload.name'))

Я получаю ошибку с кодом выше:

    {'Items': [],
 'Count': 0,
 'ScannedCount': 2,
 'ResponseMetadata': {'RequestId': 'LLR4058OVT9OVOAH2323PD43BRVV4KQNSO5AEMVJF66Q9ASUAAJG',
  'HTTPStatusCode': 200,
  'HTTPHeaders': {'server': 'Server',
   'date': 'Tue, 25 Feb 2020 22:06:23 GMT',
   'content-type': 'application/x-amz-json-1.0',
   'content-length': '39',
   'connection': 'keep-alive',
   'x-amzn-requestid': 'LLR4058OVT9OVOAH2323PD43BRVV4KQNSO5AEMVJF66Q9ASUAAJG',
   'x-amz-crc32': '4181910954'},
  'RetryAttempts': 0}}

Ниже приведена схема моей таблицы:

user        id                                            payload
123         120f3a28-c89a-4b20-89bd-dea385c4a15a          {}
user1       008bc37d-4b24-4731-9a4d-36756ba4f06d          {"created": {"S:..
user1       a30cee2d-5624-4896-b6d5-a5623b341cc1          {"Created": {"S:...
user2       z30ckk2d-2123-7654-9a94-a55b3211cc23          {"Created": {"S:...

Ниже приведена типичная полезная нагрузка в столбце полезной нагрузки

    {'payload': {'record_count': Decimal('2'),
  'size_type': 'percent',
  'records': [{'name': 'SSGA SPDR S&P 500 - SSgA Active Trust',
    'ticker': 'SPY US',
    'id': '80d99cb7-354f-4d30-ac13-17ba4ec02733',
    'locale': 'US',
    'size': Decimal('80'),
    'secid': Decimal('549535')},
   {'name': 'BTC iShares Core U.S. Aggregate Bond ETF - BlackRock Institutional Trust Company N.A.',
    'ticker': 'AGG US',
    'id': '807bfb0f-757d-4913-b87f-df54dae4154b',
    'locale': 'US',
    'size': Decimal('20'),
    'secid': Decimal('551115')}],
  'created': '2020-02-25T18:16:06.584162',
  'name': 'Logicly Aggressive Benchmark',
  'currency': 'usd',
  'id': '008bc37d-4b24-4731-9a4d-36756ba4f06d',
  'updated': '2020-02-25T18:16:06.584164'},
 'id': '008bc37d-4b24-4731-9a4d-36756ba4f06d',
 'user': 'user1'}

Как видите, полезная нагрузка имеет ключ с именем «полезная нагрузка», который имеет «имя». т. е. «логически агрессивный эталонный тест»

Как запросить все портфели ios в user1 и получить атрибут имени каждой полезной нагрузки? Спасибо

...