[英]Does DynamoDB have a default/no-op FilterExpression?
我想使用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設置為默認值(在注釋中上面指出),以便在沒有應用過濾器時掃描工作。
據我所知,這是不可能的。
有點斗志,但我想我能做到......
filter_exp = Attr('pKey').exists()
...其中pKey
是表中的主鍵或其他必填字段。
它絕對不是“正確的”解決方案,但可能是我可以有條件地構建的最可靠的無操作過濾器。
如果我正確地解釋文檔 ,則無論使用何種過濾器表達式,掃描操作都會消耗相同數量的讀取容量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.