Использовать строку в качестве параметра для FilterExpression в запросе DynamoDB - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть следующая строка в python:

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"

Возможно ли передать строку в качестве параметра для запроса FilterExpression?Это должно войти как строка, потому что это питается словарем.Я попытался удалить кавычки, такие как:

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

, но это не сработало.Любые идеи относительно того, что я мог бы попробовать дальше?Спасибо!

1 Ответ

0 голосов
/ 01 октября 2018

Я не думаю, что вы можете передать строку для FilterExpression, но вы можете получить желаемое выражение Python, используя eval().

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

Конечно, вам нужно действительно доверяйте вашим данным при использовании eval().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...