Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python查询DynamoDB中列表字段中的项?_Python_List_Amazon Dynamodb - Fatal编程技术网

如何使用Python查询DynamoDB中列表字段中的项?

如何使用Python查询DynamoDB中列表字段中的项?,python,list,amazon-dynamodb,Python,List,Amazon Dynamodb,我有一个表,其中包含具有以下属性的项: { "country": "USA", "names": [ "josh", "freddy" ], "phoneNumber": "123", "userID": 0 } 我试图通过使用python查找名称来查询DynameDB中的项。因此,我会在我的代码中写

我有一个表,其中包含具有以下属性的项:

{
  "country": "USA",
  "names": [
    "josh",
    "freddy"
  ],
  "phoneNumber": "123",
  "userID": 0
}
我试图通过使用python查找名称来查询DynameDB中的项。因此,我会在我的代码中写下,我需要的项目在字段
“names”
中有
“freddy”

我看到很多论坛提到了
“contains”
,但没有一个论坛给出了一个例子

我当前的代码如下:

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users_table')
data = table.query(
    FilterExpression: 'names = :name',
    ExpressionAttributeValues: {
      ":name": "freddy"
    }
)
我显然不能使用它,因为
“names”
是一个列表,而不是一个字符串字段。
如何在
名称
中查找
“freddy”

由于
名称
字段不是主键的一部分,因此不能使用
查询
。通过
names
查找项目的唯一方法是使用
scan

import boto3
from boto3.dynamodb.conditions import Key, Attr

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users_table')
data = table.scan(
    FilterExpression=Attr('names').contains('freddy')
)

我尝试了这个,现在得到的是未定义Attr…[错误]名称错误:未从boto3.dynamodb.conditions导入键定义名称“Attr”
,Attr