Gil*_*jor 9 python amazon-dynamodb boto3
我正在尝试将 boto3 dynamodb 条件表达式(使用 boto3.dynamodb.conditions 中的类型)转换为其字符串表示形式。当然,这可以手动编码,但我自然更希望能够找到 AWS 自己开发的东西。
Key("name").eq("new_name") & Attr("description").begins_with("new")
Run Code Online (Sandbox Code Playgroud)
会成为
"name = 'new_name' and begins_with(description, 'new')"
Run Code Online (Sandbox Code Playgroud)
我一直在检查 boto3 和 boto 核心代码,但到目前为止没有成功,但我认为它一定存在于代码库中的某个地方......
模块中boto3.dynamodb.conditions有一个名为 的类ConditionExpressionBuilder。您可以通过执行以下操作将条件表达式转换为字符串:
condition = Key("name").eq("new_name") & Attr("description").begins_with("new")
builder = ConditionExpressionBuilder()
expression = builder.build_expression(condition, is_key_condition=True)
expression_string = expression.condition_expression
expression_attribute_names = expression.attribute_name_placeholders
expression_attribute_values = expression.attribute_value_placeholders
Run Code Online (Sandbox Code Playgroud)
我不知道为什么这没有记录在任何地方。我只是在浏览本页底部的源代码时随机发现它https://boto3.amazonaws.com/v1/documentation/api/latest/_modules/boto3/dynamodb/conditions.html。
不幸的是,这不适用于分页器格式字符串表示法,但它应该适用于该Table.query()格式。