Herokuでなにか作ろうと思ったときに
「なにかちょっとしたデータを管理するために簡単なものないかなー」
と考えていました。
「そういえばファイル入出力ってどうなんだ?」
と思い試してみたら、可能だったのでやったことについてご紹介です。
Heroku
ローカルでCSVを取り扱うように、普通にCSV出力すれば読み書きが可能です。
特に設定等もいりませんでした!
今回試しに、アクセスすると
- CSVがなかったら読み込まずに初期化
- CSVがあったら読み込み→値を表示
- 値+1を書き込む
というものを作ってみました。
CSVは試験的に複数データをセットしています。
このうち最初のデータだけを更新しています。
Read/Write
Read/Writeする関数です。
import csv def readCsv(fname='test.csv'): if not os.path.exists(fname): return None readList = [] with open(fname, 'r') as f: reader = csv.reader(f) for rows in reader: l = [] for row in rows: l.append(row) # print(row) readList.append(l) return readList def writeCsv(data, fname='test.csv'): with open(fname, 'w') as f: writer = csv.writer(f, lineterminator='\n') writer.writerows(data)
route
読み込むたびにアップデート
@app.route("/") def hello(): readData = readCsv() if readData is None: readData = [[1, 2, 3], [4, 5, 6]] else: print(readData) readData[0][0] = str(int(readData[0][0]) + 1) writeCsv(readData) text = '' for datas in readData: for data in datas: text += str(data) return "hello! " + text
参考
コチラを参考にしました。ありがとうございました。
あとがき
HerokuでCSV入出力をするサンプルでした!
データ管理をしようと思ったら、DBとか使うしかないのかなーと思っていました。
なのでこれならユーザ入力出ないようなものは簡単に取り扱えそうですね!
ユーザデータを登録するような仕組みが必要なものなら、DBを覚えないとだめそうな気がします。
Herokuに興味があればコチラもどうぞ。