, поэтому у меня есть следующий сценарий, где мне нужно сканировать таблицу, и мне нужно запросить столбец, который является логическим, теперь с текущей реализацией я не могу запросить.
я получаю следующую ошибку
Ошибка: у объекта «Attr» нет атрибута «BOOL»
Ниже приведен мой код, который принимает запрос в следующем формате "<columnname><operator><value>"
, поэтому я выполняю оператор преобразования соответствующей операции из динамо. Пример запроса будет выглядеть так: "Potential_TechLead_Y_N=True"
def query_parser(query):
query = query.replace('<=', '^')
query = query.replace('>=', '~')
query = query.replace('<>', '`')
query = query.replace('like', '%')
filter_expression = None
if query:
try:
filters = query.split('&')
filter_expression = ""
for filter in filters:
data = re.split('([=<>^~%`])', filter)
if "True" in data[2] or "False" in data[2]:
data[1] = "BOOL"
filter_expression = filter_expression + "Attr('{}').{}('{}') & ".format(data[0], data[1], eval(data[2]))
else:
filter_expression = filter_expression + "Attr('{}').{}('{}') & ".format(data[0], data[1], data[2])
# filter_expression = "Boolean ({})".format(eval(data[2]))
filter_expression = filter_expression.replace('=', 'eq')
filter_expression = filter_expression.replace('<', 'lt')
filter_expression = filter_expression.replace('^', 'lte')
filter_expression = filter_expression.replace('>', 'gt')
filter_expression = filter_expression.replace('~', 'gte')
filter_expression = filter_expression.replace('`', 'ne')
filter_expression = filter_expression.replace('%', 'contains')
# print(filter_expression)
filter_expression = filter_expression[:-2]
print(filter_expression)
return filter_expression
except Exception as e:
print(error_constants.DYNAMO_QUERY_STANDARD_ERROR)
print('Error: ' + str(e))
exit(1)
return filter_expression