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

2024-10-02 16:27:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

{
  "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"是一个列表而不是字符串字段。 如何在names中查找"freddy"


Tags: 代码name名称属性namestabledynamodbcountry
1条回答
网友
1楼 · 发布于 2024-10-02 16:27:51

由于names字段不是主键的一部分,因此不能使用query。通过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')
)

相关问题 更多 >