Python 使sql转储可下载

Python 使sql转储可下载,python,mysql,flask,Python,Mysql,Flask,我正在用python/flask制作一个投票应用程序,我需要制作一个按钮,允许用户下载mysql转储 执行转储的mysql代码如下- 将*选择到以“,”结尾的输出文件“vows.csv”字段中 我有两个问题 保存此转储的路径应该是什么,以便下载 我在用炼金术。如何从flask应用程序执行此代码并提供指向生成文件的链接 非常感谢 流媒体 @app.route('/foo') def foo(): def generate(): yield 'first part

我正在用python/flask制作一个投票应用程序,我需要制作一个按钮,允许用户下载mysql转储

执行转储的mysql代码如下-
将*选择到以“,”结尾的输出文件“vows.csv”字段中

我有两个问题

  • 保存此转储的路径应该是什么,以便下载
  • 我在用炼金术。如何从flask应用程序执行此代码并提供指向生成文件的链接
非常感谢

流媒体

 @app.route('/foo')
 def foo():
     def generate():
         yield 'first part'
         yield 'second part'
     return Response(generate(), direct_passthrough=True)

好的,让我们来看看这个问题

您想将您的投票转储到csv文件中,在该文件中,投票表中的字段以“,”结尾

您可以直接迭代sqlalchemy表:) 像这样的

",".join(vote for vote in Vote) 
很明显,这可能有点不同,但仍然是正确的。在Python中构造csv,而不是让mysql将其转储

至于在哪里保存,您有两种选择,要么将其写入硬盘,要么将其存储在内存中(取决于限制条件)

如果将其写入硬盘,只需确保其保存在应用程序的
/static
目录中,如果它在内存中,则可以直接将其流式传输到请求


另一种方法是动态生成文件,只需将其写入请求程序

这似乎是个好主意!我能够用python生成该文件,但仍然无法通过web应用程序引用它。我的应用程序是/var/www/,不可编辑,我无法输入代码将文件放入静态文件夹。你能给出一些关于“直接流式处理请求”的建议吗?Flask中流式处理响应的文档似乎有一个你想要做的例子:(结合下面Jakob的回答)