Как передать файл данных pandas кнопке в сети для загрузки файла (.csv или .xlsx) с флягой, Python 2.7 - PullRequest
0 голосов
/ 12 сентября 2018

Мое веб-приложение имеет функцию визуализации для пользователя, см. Диаграмму (Среднее, Стандартное отклонение) по from ...day to ...day (Дата начала до даты окончания), где (Производственная линия) затем запрашивает SQL для подключения к базе данных. Это форма визуализации. :

enter image description here

После запроса пользователя мое веб-приложение покажет около 31 графика, и я добавлю 3 кнопкиДля загрузки файла каждый график в сети выглядит следующим образом.( пример. Номер 1,2 графика ):

enter image description here enter image description here

И это мой javascript для создания диаграммы и т. Д. в файле .html (spc_chart.html) , но пока не передает фрейм данных в .html:

enter image description here

У меня есть все данные pandas: Avg Chart Data, Std Chart Data, Raw Data (используйте вычисления для Avg, Std) в 3 массивах (имя: ChartDataAvg, ChartDataStd, RawData),

Я просто знаю, что для загрузки файла необходимо добавить href="/..." для каждой кнопки и установить @app.route('/...') в python, затем отправить SQL для каждого определения @app.route('/...') и передать вычисленный фрейм данных в сеть.ref ( Flask: Загрузите CSV-файл при нажатии кнопки ) Но Я не знаю, как передать SQL-запрос пользователя из def в другой @app.route(/...).

Есть ли какой-нибудь способ передать все данные pandas в кнопку для загрузки файла в каждом из графиков 1, 2, 3, ... или отправить SQL для определения в другом app.route ???

1 Ответ

0 голосов
/ 12 сентября 2018

Сначала вы можете создать свой фрейм данных в формате csv с помощью следующей функции:

def build_csv_data(dataframe):
    csv_data = dataframe.to_csv(index=False, encoding='utf-8')
    csv_data = "data:text/csv;charset=utf-8," + quote(csv_data)
    return csv_data

Затем создать функцию обратного вызова для ссылки на скачивание следующим образом:

@app.callback(Output('download_link', 'href'), [<your dataframe input variables>])
    def callback_build_csv_data(dataframe):           
        return build_csv_data(dataframe)

Наконец, вдобавьте ссылку на скачивание для вашей страницы:

html.A('Download Data',
        id='download_link',
        download="rawdata.csv",
        href="",
        target="_blank"
        ),

Надеюсь, это полезно.

...