postされたファイルをDBに登録
①request.filesで取得したファイルをbyte型に変換する。
qiita.py
f = request.files['filename'].stream
file = bytes(f)
②pandasのDataFrameを利用し、DBに登録する。
pandasとsqlalchemyはインストールしておく。
$ pip install pandas
$ pip install sqlalchemy
DB登録までのソース。
qiita.py
import pandas as pd
from sqlalchemy import create_engine
#接続文字列 user、passwd、localhost、databaseをそれぞれ今回の対象に入れ替える。
engine = create_engine('mysql://user:passwd@localhost/database?charset=utf8')
#DataFrameにファイルを格納
#この時 if_exists がappendだとinsertされる
#tablenameを入れたいテーブルに入れ替える
#かっこがないとインデックスのエラーが出るので、必ず使うこと→{'file':[file]}
df = pd.DataFrame({'file':[file]})
#データ更新部分
df.to_sql(
name = 'tablename',
con = engine,
if_exists='append',
index = False,
chunksize = 10000,
method = "multi",
)
※ファイルを格納するデータ型は、Blob型に。
insert文に直接「%s」でファイルをバイト変換したを組み込み、実行してみたが書き方が間違っているといわれ
色々試してみたが正解が見つけられなかった。
なので、pandasを使ってみたが個人的にはSQL文を直書きしたい人間なので微妙な感じ。
まだPythonを触れて、一週間前後なのでもしかしたら見つかるかもしれない。