Я хочу создать мутацию BigTable DeleteFromRow
.Прото для Mutation
и DeleteFromRow
выглядит следующим образом:
oneof mutation {
// Set a cell's value.
SetCell set_cell = 1;
// Deletes cells from a column.
DeleteFromColumn delete_from_column = 2;
// Deletes cells from a column family.
DeleteFromFamily delete_from_family = 3;
// Deletes cells from the entire row.
DeleteFromRow delete_from_row = 4;
}
}
message DeleteFromRow {
}
В Python вы не можете напрямую создать экземпляр объекта DeleteFromRow
и установить для поля delete_from_row
поля Mutation
значениеэтот объект.
Так что не работает :
request = bigtable_pb2.MutateRowRequest(table_name='tablename', row_key=row_key)
mutation = request.mutations.add()
mutation.delete_from_row = data_pb2.Mutation.DeleteFromRow()
Как было задано другими пользователями SO (см. этот вопрос ), что приводитв
AttributeError: Assignment not allowed to composite field "delete_from_row" in protocol message object.
В соответствии с protobuf docs , вы должны установить одно из полей, установив одно из дочерних полей.Таким образом, мутация DeleteFromFamily
должна создаваться следующим образом:
mutation.delete_from_family.family_name = 'some_family'
Однако как мне это сделать для сообщения DeleteFromRow
, в котором нет полей?