DynamoDB boto3: как сделать запрос, если ключ имеет какое-либо значение - PullRequest
1 голос
/ 21 мая 2019

Я пишу код Python для запроса таблицы в динамической БД. Наряду с другими условиями я также хотел бы получить строки, в которых есть какое-то значение для ключа, который я указываю.

KeyConditionExpression = Key('Status').eq('Done') & Key('Name').begins_with('A') & Key('Error').exists()

В приведенном выше коде я хотел бы отобразить строки, в которых столбец «Ошибка» имеет какое-либо значение, будь то что угодно. но последнее условие вызывает ошибку. AttributeError: у объекта «Ключ» нет атрибута «существует».

Как изменить код для включения третьего запроса?

1 Ответ

2 голосов
/ 21 мая 2019

Предполагая, что ваш ключ «Ошибка» не является ни ключом раздела, ни ключом сортировки, поскольку вы всегда должны указывать имя и значение ключа раздела в качестве условия равенства. Также для ключа сортировки вы можете использовать один из перечисленных ниже операторов сравнения.

  • a = b - true, если атрибут a равен значению b
  • a a <= b - true, если a меньше или равно b </li> a> b - истина, если a больше, чем b
  • a> = b - true, если a больше или равно b
  • a МЕЖДУ b И c - истина, если a больше или равно b и меньше или равно c.
  • begin_with (a, substr) - true, если значение атрибута a начинается с определенной подстроки.

Теперь вернемся к вашей проблеме. Если вы используете операцию Query , то вы определенно можете использовать QueryFilter , чтобы проверить, существует ли какое-либо ненулевое значение для ключа «Ошибка». Официальная документация определяет QueryFilter как:

В операции Query QueryFilter - это условие, которое оценивает результаты запроса после чтения элементов и возвращает только нужные значения.

Следующие операторы сравнения доступны для QueryFilter :

EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | СОДЕРЖИТ | NOT_CONTAINS | BEGINS_WITH | IN | МЕЖДУ

Пожалуйста, обратитесь к указанной ссылке, чтобы получить больше информации о QueryFilter и FilterExpression

Официальная документация AWS Ссылка: https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/LegacyConditionalParameters.QueryFilter.html

...