以下を思い出して下さい。
https://teratail.com/questions/17988
コメント欄にあるとおり
https://teratail.com/questions/29934
を実現したいとのことですので、上記の
pythonでmysql→csvを生成し、アクセスしたPCのローカルへ保存させる
に沿った回答をさせていただきます。
ただし、申し訳ありませんが、
Pythonは不勉強なのと、手元にまともな環境が無くほとんど動作確認できていないため、
うまく動かないかもしれません。
まずは以下のコードをそのままサーバに配置し、htmlから実行してみてください。
コメント行があるとうまく動かないかもしれません。
その際はコメント行を削除して再試行してみてください。
(私が手元のMacで実行したときは、そうでした)
python
1 import csv
2 import tempfile
3 import os . path
4 import sys
5
6 # この変数に、DBから取得したデータを
7 # 1つの要素が1レコードに対応する2次元配列として格納する
8 result = [
9 [ 0 , 'hoge' ] ,
10 [ 1 , 'fuga' ] ,
11 [ 2 , 'piyo' ]
12 ]
13
14 # 一時ファイルにCSVデータを出力
15 f = tempfile . NamedTemporaryFile ( )
16 writer = csv . writer ( f )
17 writer . writerows ( result )
18
19 # ポインタを戻さないと、os.path.getsizeに失敗する
20 f . seek ( 0 , 0 )
21
22 # HTTPヘッダを出力
23 sys . stdout . write ( "Content-Type: application/octet-stream\n" )
24 sys . stdout . write ( "Content-Disposition: attachment; filename=\"sample.csv\"\n" )
25 sys . stdout . write ( "Content-Length: " + str ( os . path . getsize ( f . name ) ) + "\n" )
26 sys . stdout . write ( "Expires: 0\n" )
27 sys . stdout . write ( "Cache-Control: must-revalidate, post-check=0,pre-check=0\n" )
28 sys . stdout . write ( "Pragma: private\n" )
29 sys . stdout . write ( "\n" )
30
31 # 参考サイトからコピペ
32 # 必要なのかどうか不明
33 if sys . platform == "win32" :
34 import msvcrt
35 msvcrt . setmode ( sys . stdout . fileno ( ) , os . O_BINARY )
36
37 # HTTPボディににCSVデータを出力
38 stdout = csv . writer ( sys . stdout )
39 reader = csv . reader ( f )
40 for row in reader :
41 print stdout . writerow ( row )
42
43 f . close ( )
上記コードでうまく"sample.csv"をダウンロードできたら、変数result
に格納する値をMySQLから取得したデータに置き換えてください。
MySQLへの接続に何のライブラリを使用しているのか不明でしたので、その部分は割愛させていただきましたが、
実は、htmlからpostでpythonへ値を渡し、それをもとにmysqlからcsvをエクスポートしています。
ということなので、PythonからMySQLへの接続は問題なく実装できているかと思います。
※参考ページ
http://docs.python.jp/2/library/tempfile.html
http://docs.python.jp/2/library/csv.html
http://winter-tail.sakura.ne.jp/pukiwiki/index.php?Python%A4%A2%A4%EC%A4%B3%A4%EC%2F%A5%D5%A5%A1%A5%A4%A5%EB%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/30 08:17
2016/03/30 08:32 編集
2016/03/30 08:57
2016/03/30 09:07
2016/03/30 11:02
2016/03/30 11:09 編集
2016/03/30 11:34
2016/03/30 13:18 編集
2016/03/31 01:58
2016/04/02 23:48
2016/04/03 02:20
2016/04/03 09:23
2016/04/03 09:27
2016/04/04 08:23
2016/04/04 23:57
2016/04/05 00:53
2016/04/05 05:56
2016/04/05 09:17
2016/04/05 14:14