DynamoDB是否具有默认/no-op滤波器表达



我想使用boto3扫描一个小动态表,并且可选地允许此代码的呼叫者指示何时应适用于此扫描。

执行此操作的代码很方便:

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(上面在注释中指示(,以便在没有过滤器时进行扫描。

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

有点杂乱,但我认为我可以做...

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

... pKey是表中的主要键或其他强制性字段。

绝对不是"正确"的解决方案,而是我可以在有条件地构建的最可靠的No-Op过滤器。

如果我在解释文档时是正确的,扫描操作将消耗相同数量的读取容量,无论其任何过滤器表达式如何。

最新更新