Я пытался запросить таблицу DynamoDB с помощью функции Lambda.
Ключ раздела моей таблицы - id
. Я пытаюсь запросить его по другому ключу с именем dipl_idpp
. Я распутал, что это невозможно.
Я нашел здесь решение: мне нужно создать глобальный вторичный индекс, указывающий на столбец, по которому я хочу выполнить запрос (в моем случае dipl_idpp
).
Я сделал это на Динамо. Но когда я выполняю свою функцию, у меня остается та же проблема:
An error occurred (ValidationException) when calling the Query operation: Query condition missed key schema element: id', 'occurred at index 0')"
Вот код, который я использую:
def query_dipl_dynamo(key_table,valeur_query,name_table):
dynamoDBResource = boto3.resource('dynamodb')
table = dynamoDBResource.Table(name_table)
response = table.query(
KeyConditionExpression=Key(key_table).eq(valeur_query))
df_fr = pd.DataFrame([response['Items']])
if len(df_fr.columns) > 0 :
print("hellooo1")
df = pd.DataFrame([response['Items'][0]])
return valeur_query, df["dipl_libelle"].iloc[0]
//
//
df9_tmp["dipl_idpp"] = df8_tmp.apply(lambda x : query_dipl_dynamo("dipl_idpp",x["num_auto"], "ddb-dev-PS_LibreAcces_Dipl_AutExerc")[0], axis=1)
Должен ли я что-то изменить помимо создания индекса? Слишком мало документации доступно.
Спасибо!