如何使用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