Python Flask send_file StringIO blank filesの回答を参考にすると、以下のようなコードでインメモリで処理できます。
Python
1from flask import Flask, send_file
2import json
3import io
4
5app = Flask(__name__)
6
7@app.route('/')
8def hello_world():
9 return "Hello World!"
10
11@app.route("/download",methods=["GET"])
12def download():
13
14 #データベースから取得したdict型
15 data={'num':123, 'str':'abc'}
16
17 # メモリ上のバイナリファイルとして書込
18 s = json.dumps(data)
19 mem = io.BytesIO()
20 mem.write( s.encode('utf-8'))
21 mem.seek(0) # 先頭に戻す
22
23 ret = send_file( mem, mimetype='application/json', as_attachment=True, attachment_filename='hoge.json')
24 return ret
25
26if __name__ == '__main__':
27 app.run(debug=True)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。