使用 .contains() 从 DynamoDB 检索值

Red*_*air 2 python amazon-web-services amazon-dynamodb

我是 NoSQL 数据库的新手,遇到了一个问题。我只想从 DynamoDB 中包含特定值的表中获取键。我知道对于关键等于我可以使用:

response = table.query(
    KeyConditionExpression=Key('year').eq(1992) 
) 
Run Code Online (Sandbox Code Playgroud)

但我不能使用:

 response = table.query(
    KeyConditionExpression=Key('year').contain('1992') 
) 
Run Code Online (Sandbox Code Playgroud)

错误是:

键对象没有包含属性。

not*_*est 5

DynamoDB 不遵循contain用于 Query API 上的关键属性。您只能对分区键属性使用equals

CONTAINS只能与LIST 或 SET数据类型一起使用。此外,它只能用于FilterExpression.

CONTAINS :检查子序列或集合中的值。

列表支持 CONTAINS:当评估“a CONTAINS b”时,“a”可以是一个列表;但是,“b”不能是集合、映射或列表。


小智 5

在 2023 年查看这个问题的人们(至少使用当前版本的 Boto!)将会被误导到这里的其他答案。

现在,您可以使用 Attr 对象(而不是 Key)检查值是否包含子字符串。

  response = table.scan(
        FilterExpression=Attr('key').contains(string)
  )
Run Code Online (Sandbox Code Playgroud)