Этот вопрос основан на предыдущем, который я недавно задавал. Я постарался сделать этот вопрос как можно более подробным.
Моя цель: Я создаю веб-приложение, которое позволяет проводить исследовательский анализ океанских буев. Пользователь выбирает буй и некоторые графические опции (например, среднемесячные значения, фильтры по размеру набухания и т. Д.), И создается график, показывающий результирующие данные для этого буя.
Подход:
- Пользователь идентифицирует буй с помощью веб-формы или селектора определенного типа и выбирает параметры для графика (например, среднемесячные значения за все время).
- Данные запрашиваются для выбранного буя.
- Данные преобразуются в кадр данных pandas данных временных рядов буев.
- Pandas обрабатывает данные на основе выбранной пользователем опции (например, вычисляет среднемесячные значения).
- Plotly создает диаграмму
- Диаграмма отправляется на файл templates.py в файле views.py, а диаграмма отображается на веб-странице.
MyПроблема: Сбор данных затруднен. Архивные данные для всех буев существуют на веб-странице NABC NOAA, и нет простого API для доступа к этим архивным данным. Скорее, он хранится на нескольких страницах в нескольких CSV. К счастью, некоторый открытый исходный код уже существует для доступа к этим данным. Код создает объект Buoy (на основе идентификатора буя), собирает данные и возвращает их в виде фрейма данных pandas timeseries.
Основываясь на моем наброске рабочего процесса, приведенном выше, я думаю, что могу просто каждый раз создавать новый фрейм данных pandas. пользователь запрашивает, а затем создает сюжетный график и передает его в шаблон. Это пропустило бы всю базу данных django и все моделирование (я думаю?). Я думаю, что этот подход сделан для простых учебных пособий по погодным приложениям, где API уже существует, и выполнение запроса данных выполняется довольно быстро. Поскольку данные, к которым я пытаюсь получить доступ, занимают гораздо больше времени, я полагаю, что это будет крайне неэффективным подходом. Я думаю, что было бы более целесообразно также сохранить полученные данные в базу данных Django. Таким образом, моя база данных будет заполняться «на лету», когда будут сделаны последующие запросы на разные буи. Затем, когда пользователь запрашивает конкретный буй, если данные о буях уже есть в моей базе данных, их можно просто загрузить.
Вопрос 1: После того, как сделан запрос на буй и возвращен кадр данных pandas с историческими данными, как сохранить фрейм данных pandas данных временного ряда буев в виде группы экземпляровмодели BuoyLog в моей базе данных?
Вопрос 2: Допустим, кто-то запрашивает данные о буе, который уже был запрошен ранее и, следовательно, уже существует в моей базе данных. Как мне сделать так, чтобы вместо того, чтобы снова и снова копировать данные со страниц NDBC NOAA, данные просто загружались из моей базы данных django sql?
Заранее благодарю за любую помощь !!