Как сохранить объект dataframe между вызовами API? - PullRequest
0 голосов
/ 01 июля 2019

Мое приложение Django позволит пользователям загружать файл Excel, а затем будет анализировать и визуализировать данные в этом файле.

Для обработки файлов Excel я представил модель с FileField:

class DataFile(models.Model)
    file = models.FileField(upload_to='data_files')

Далее я хочу создать несколько представлений API для этого приложения, которые бы брали файл, загруженный пользователем, манипулировали им с помощью объекта dataframe Pandas и возвращали манипулированные данные.

Дляпример:

def some_api_view(request):
    data_file = DataFile.objects.last()
    dataframe = pandas.read_excel(data_file.file.path)
    manipulated_dataframe = # ... dataframe manipulation goes on here ... #
    return JsonResponse({'manipulated_dataframe': manipulated_dataframe'})

Меня беспокоит то, что каждое представление API, подобное этому, должно будет читать файл Excel самостоятельно.Можно ли спроектировать API таким способом, который позволял бы считывать файл в кадр данных только один раз (поскольку он всегда будет одним и тем же файлом), и тогда представления API будут отвечать только за извлечение этого кадра данных, манипулирование им и возвратманипулированные данными?

Я использую базу данных SQL, поэтому я не могу сохранить сам объект dataframe в базе данных.Кроме того, я бы предпочел не засорять его и не хранить его в поле.

1 Ответ

0 голосов
/ 01 июля 2019

Вместо чтения файла Excel в представлении API вы можете определить функцию Модель, которая возвращает Dataframe.

class DataFile(models.Model):
    file = models.FileField(upload_to='data_files')
    #Other fields here

    def get_dataframe(self): 
        dataframe = pandas.read_excel(self.file.path)
        return dataframe

Вызовите эту функцию для требуемого объекта.

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