[英]Dynamodb and Boto3, Chain Multiple Conditions in Scan
我正在尋找一種在 Dynamodb 中創建scan
請求的方法,其中多個FilterExpression
條件“與”在一起。
例如,我們可以使用以下標准掃描“水果”數據庫:
criteria = {
'fruit': 'apple',
'color': 'green',
'taste': 'sweet'
}
我知道這些可以像這樣連接成一個字符串:
FilterExpression = ' AND '.join([f"{k}=:{k}" for k, v in criteria.items()])
ExpressionAttributeValues = {f":{k}": {'S': v} for k, v in criteria.items()}
然而,這似乎不是最優雅/pythonic 的方法。
老實說,我認為你在那里擁有的東西很好,盡管它非常有限。 如果您正在做的事情非常簡單,這可能是可以接受的。
如果您想使用庫作為 DynamoDB 的 ORM,以便使用您自己的數據類集更輕松地處理存儲/檢索數據,而不需要將其轉換為輸入/輸出 boto 響應,您應該查看PynamoDB
使用reduce
,可以實現此行為:
from functools import reduce
from boto3.dynamodb.conditions import Key, And
FilterExpression=reduce(And, ([Key(k).eq(v) for k, v in criteria.items()]))
希望這對你有用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.