【发布时间】:2021-04-20 20:49:43
【问题描述】:
在 Flask 应用程序中,我有一个包含事件的表,其中有很多,现在我需要制作一个将数据导出到 CSV 的函数:
@events.route('/events/get_events', methods=['POST', 'GET'])
def get_transactions():
query = {}
events = EventModel.objects(__raw__=query).all()
@stream_with_context
def generate_io_csv(header, items):
data = StringIO()
csw_writer = csv.writer(
data, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
csw_writer.writerow(header)
yield data.getvalue()
data.seek(0)
data.truncate(0)
for item in items:
csw_writer.writerow((
item.date,
item.user,
item.data,
))
yield data.getvalue()
data.seek(0)
data.truncate(0)
header = ('date', 'user', 'data')
response = Response(generate_io_csv(header, events), mimetype='text/csv')
response.headers.set('Content-Disposition', 'attachment', filename='data.csv')
return response
我在我的网站上实现了分页,所以没有问题,但是当尝试导出大量数据时,时间太长了。
我知道我可以创建一个任务来生成一个文件然后请求它,但如果可能的话我想不这样做。
作为数据库,我使用 MonogoDB 和 Mongoengine 进行连接。
【问题讨论】:
标签: python-3.x flask mongoengine flask-mongoengine