如何将Pynamodb的条件表达式用于graphQl?

问题描述 投票:0回答:1

我正在使用 PynamoDB 查询 DynamoDB 表。它是一个基本表,user_id为PK,name为SK。我还创建了一个 LSI,其中 user_id 为 PK,单位为 SK。

要根据 user_id 和 name 进行查询,我们可以按以下方式编写查询。

result = userModel.query(user_id, name)
print(result)

上面的代码运行良好。现在假设我需要根据 user_id 和单位(多个值)查询表,我们在 pynamodb 中有条件表达式。我正在尝试使用“is_in”方法。下面是查询。这里“unit_index”是LSI,“unit”是属性名称。

result = userModel.unit_index.query(
    user_id,
    userModel.unit.is_in(1,2)
)

上述查询不起作用。我收到以下错误。

Failed to query items: An error occurred (ValidationException) on request (525267c5-b4fb-46a3-a8a9-008af5b234a6) on table (user_table) when calling the Query operation: Invalid operator used in KeyConditionExpression: IN

您能让我知道在不使用 for 循环的情况下编写查询的最佳方式是什么吗?

python graphql amazon-dynamodb pynamodb
1个回答
0
投票

无法使用查询在排序键上使用

IN
运算符。

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html#DDB-Query-request-KeyConditionExpression

您需要对列表中的每个值进行一次查询,或者使用

ExecuteStatement
,它允许您使用
IN
运算符提供最多 50 个值。

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html

© www.soinside.com 2019 - 2024. All rights reserved.