代码之家  ›  专栏  ›  技术社区  ›  Walter U.

使用字符串作为dynamoDB查询中filteexpression的参数

  •  1
  • Walter U.  · 技术社区  · 7 年前

    fe = "Attr('COLOR').eq('RED')"
    

    我试着用 FilterExpression 要查询dynamoDB表,我要调用:

    response = table.query(KeyConditionExpression=Key('key').eq(key),
                           FilterExpression=fe        
    )
    

    但我得到了:

    An error occurred (ValidationException) when calling the Query operation: Invalid FilterExpression: Syntax error; token: "'", near: "('COLOR"
    

    是否可以将字符串作为 询问?它需要以字符串的形式输入,因为它是由字典输入的。我试着去掉一些引语,比如:

    response = table.query(KeyConditionExpression=Key('key').eq(key),
                               FilterExpression=fe.replace('"', '')        
        )
    

    1 回复  |  直到 7 年前
        1
  •  2
  •   Mike Patrick    7 年前

    我不认为你能传递一个字符串 FilterExpression ,但可以使用 eval()

    fe = "Attr('COLOR').eq('RED')"
    key = 'myKey'
    response = table.query(KeyConditionExpression=Key('key').eq(key),
                           FilterExpression=eval(fe))
    

    当然,你需要 真正地 使用时请相信您的输入 .