Я хотел бы, чтобы получить результаты из большого массива (поступающий из базы данных) в браузер (с колбой) с использованием методы совместно в their documentation:Как вернуть одну сгенерированную строку из csv?
@app.route('/large.csv')
def generate_large_csv():
def generate():
for row in iter_all_rows():
yield ','.join(row) + '\n'
return Response(generate(), mimetype='text/csv')
С изюминкой: Вместо того, чтобы генерировать файл CSV самому (присоединитесь к ',', добавив разделительную линию), я бы хотел использовать пакет csv
.
Теперь, единственный способ я нашел, чтобы вернуть только один письменный линию, чтобы сделать следующее:
@app.route('/large.csv')
def generate_large_csv():
def generate():
for row in iter_all_rows():
dest = io.StringIO()
writer = csv.writer(dest)
writer.writerow(row)
yield dest.getvalue()
return Response(generate(), mimetype='text/csv')
Но создание нового io.StringIO
& csv.writer
для каждой строки просто не кажется правильным на всех!
Я взглянул на пакет documentation, но я не смог найти что-то, что только вернет одну строку.
является CSV вы хотите «поток» со статическим или динамическим содержимым? – Anzel
Я не уверен, что понял ваш вопрос; «Строка» является результатом базы данных. Он может содержать 0 строк до миллиона. Это не файл, хранящийся на диске. –
Да, я думаю, что неправильно понял ваш вопрос, потому что вы не упомянули, откуда исходит источник. Поэтому я задаюсь вопросом, является ли контент, который вы хотите передать, либо статическим динамическим. Причина, по которой я спрашиваю, состоит в том, что, если содержимое является статическим, у вас есть возможность не передавать поток, используя флягу, а сам веб-сервер, такой как Nginx – Anzel