擅长:python、mysql、java
<p>扩展Maxime Paille的答案,这涵盖了只有一个过滤器存在而有多个过滤器存在的情况。</p>
<pre><code>from boto3.dynamodb.conditions import And, Attr
filters = dict()
filters['Date'] = "2017-06-21"
filters['Shift'] = "3rd"
table.scan("my-table", **build_query_params(filters))
def build_query_params(filter_expressions):
query_params = {}
if len(filter_expressions) > 0:
query_params["FilterExpression"] = add_expressions(filter_expressions)
return query_params
def add_expressions(expressions: dict):
if len(expressions) > 1:
return And(*[(Attr(key).eq(value)) for key, value in expressions.items()])
elif len(expressions) == 1:
return [(Attr(key).eq(value)) for key, value in expressions.items()][0]
</code></pre>