如何在不对属性名称进行硬编码的情况下生成FilterExpression?

时间:2017-03-28 02:16:50

标签: python-3.x amazon-web-services amazon-dynamodb boto3

我知道可以像这样扫描或查询:

response = table.scan(
    FilterExpression=Attr('first_name').begins_with('J') &
                     Attr('account_type').eq('super_user') )

如果不对属性名称进行硬编码,我该怎么做? 为了澄清,鉴于这样的字典,我希望如此表格扫描;

attr_dict = {"foo":42, "bar":52}

response = table.scan(
        FilterExpression=Attr('foo').eq(42) &
                         Attr('bar').eq(52) )

如果是sql,虽然不会这样做,但他们可以做到

"select * from table where {} = {} and {} = {}".format(a,b,x,y).

我遇到的问题是我和我会怎样?两个人使用某种循环。

1 个答案:

答案 0 :(得分:1)

只需循环遍历字典中的条目即可创建FilterExpression。您可以使用布尔逻辑组合各个表达式,如下所示(只需手动构建过滤器表达式字符串):

foo = 42 AND bar = 52