DynamoDB是否具有默认/无操作FilterExpression?

时间:2019-05-02 21:11:49

标签: python amazon-web-services amazon-dynamodb boto3

我想使用Boto3扫描一个小的DynamoDB表,并允许该代码的调用者指出何时应将可选条件应用于此扫描。

这样做在代码中会很方便:

scan_kwargs = {'Select': 'ALL_ATTRIBUTES'}
filter_exp = ''  # WHAT DO HERE?
if condition1:
    filter_exp &= Attr('attribute').is_in(['blah', 'bloop'])
if condition2:
    filter_exp &= Attr('deleted').is_eq(True)
scan_kwargs.update({'FilterExpression': filter_exp})
response = table.scan(**scan_kwargs)

我正在尝试确定是否可以将FilterExpression设置为默认值(在上面的注释中指出),以便在没有应用过滤器的情况下进行扫描。

据我所知,这是不可能的。

1 个答案:

答案 0 :(得分:0)

有点草率,但我想我可以...

filter_exp = Attr('pKey').exists()

...,其中pKey是表中的主键或另一个必填字段。

这绝对不是“正确”的解决方案,但可能是我可以有条件建立的最可靠的无操作滤波器。

如果我对the documentation的解释正确,则无论任何过滤器表达式如何,扫描操作都会消耗相同数量的读取容量。