首页 > 解决方案 > 查询时格式化查询结果

问题描述

我的数据结构如下,对于简单的查询,它确实以这种方式返回:

{  
  'props':{  
     'prop1':'value1',
     'prop2':'value2',
     'prop3':'value3',
  },
  'some_id':'123',
  'timestamp':'1970-01-02 23:25:37'
}

用于查询的代码:

response = table.query(        
  KeyConditionExpression=Key('some_id').eq(some_id),        
  ProjectionExpression="#p.#p1, #s",
  ExpressionAttributeNames={'#p': 'props', '#p1': 'prop1', '#s': 'some_id'}
  )

当前代码的结果:

{
  'some_id': '123',
  'props': {
    {
      'prop1':'value1'
    }
  }
}

但我想要的结果是扁平的:

{ 
  'some_id': '123',
  'prop1': 'value1'
}

所以问题是 - 我如何通过查询获得所需的结果,而不是在获得结果后使用 python。

标签: pythonpython-3.xamazon-web-servicesamazon-dynamodbboto3

解决方案


在不尝试为此设置完整的测试环境的情况下,看起来嵌套格式是您明确要求的投影。我会试试这个:

response = table.query(        
    KeyConditionExpression=Key('some_id').eq(some_id),        
    ProjectionExpression="#p1, #s",
    ExpressionAttributeNames={'#p1': 'prop1', '#s': 'some_id'}
)

由于您实际上根本不需要#p嵌套,因此我将其从属性名称和投影中都删除了。


推荐阅读