小编Man*_*eni的帖子

如何使用 python3 在 aws 上使用过滤表达式作为嵌套映射属性?

我一直在尝试扫描 DynamoDB 以检查名为“可交付成果”的嵌套地图属性中的特定值。然而,使用带有过滤表达式的扫描会导致空结果。

import boto3
result = []
dynamo_client = boto3.client("dynamodb")
paginator = dynamo_client.get_paginator("scan")

operation_parameters = {
    'FilterExpression': "#Deliverable= :deliverable",
    'ExpressionAttributeNames': {
        '#Deliverable': 'deliverables.fc986523-a666-478e-8303-2a1c3c1dc4ba'
    },
    'ExpressionAttributeValues': {
    ':deliverable':  {
    "M": {
     "read": {
      "BOOL": True
     },
     "upload": {
      "BOOL": True
     },
     "write": {
      "BOOL": True
     }
    }
    }
  }
}
for page in paginator.paginate(TableName="TableName", **operation_parameters):
    result.append(page["Items"])

print(result)
Run Code Online (Sandbox Code Playgroud)

dynamo 数据库中的项目如下所示:

[
   [
      {
         "deliverables":{
            "M":{
               "7397d832-fefb-4ba2-97a1-0f6e73d611d9":{
                  "M":{
                     "read":{
                        "BOOL":true
                     },
                     "upload":{
                        "BOOL":true
                     },
                     "write":{
                        "BOOL":true
                     }
                  }
               },
               "fc986523-a666-478e-8303-2a1c3c1dc4ba":{
                  "M":{
                     "read":{ …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services python-3.x amazon-dynamodb

5
推荐指数
1
解决办法
2135
查看次数