お絵描きデータをデータベースに保存する
次の図のように、POST送信された各データ(タイトル、名前、コメント、お絵描きデータ)を受け取り、データベースのarticleテーブルへ保存する処理を実装します。
pages/draw.pyファイルを以下のように修正してください。実装後は、Apache(Webサーバ)を起動してブラウザからアクセスします。トップページからDRAWページへ遷移し、絵を描いて各項目を入力後、送信ボタンを押してください。データが正常に保存され、トップページの記事一覧に追加されていれば成功です。確認後は、必要に応じてWebサーバを停止させてください。
import datetime
def html(form,con,cur):
title = form.getfirst('title', '')
title.strip()
speaker = form.getfirst('speaker', '')
speaker.strip()
sentence = form.getfirst('sentence', '')
sentence.strip()
xy = form.getfirst('xy', '')
xy.strip()
print('''
(中略)
''')
if title != '' and speaker != '' and sentence != '' and xy != '':
date = datetime.datetime.now()
sql = 'INSERT INTO article(title,speaker,date,sentence,xy) VALUES (?,?,?,?,?)'
data = (title,speaker,date,sentence,xy)
cur.execute(sql,data)
con.commit()
print('''
<script>
location.href = "index.py";
</script>
''')
サンプルコードの解説
「datetime」モジュールをimportして時間を取得できます。
POSTして送られてきたタイトルの'title'パラメータ、名前の'speaker'パラメータ、コメントの'sentence'パラメータ、お絵描きデータ'xy'パラメータを取得します。「strip」メソッドは先頭と末尾の空白文字を削除します。
4つの各パラメータが空でなければ、SQL文でarticleテーブルにidカラムは自動でインクリメントされた数値が、titleカラム、speakerカラム、現在日時をdateカラム、sentenceカラム、xyカラムに各パラメータの値を入れてレコードを挿入します。
<script>タグでJavaScriptで、ホームページの「index.py」にページ遷移します。
おわりに
今回は本連載の総仕上げとして、ベジェ曲線で描いた絵をデータベースへ保存する機能を実装しました。これにて、全連載の内容は完結です。
DjangoやFlaskといったPython製Webフレームワークは強力ですが、習得には一定のコストがかかります。本連載を通じて、Pythonの標準モジュールだけでも十分にWebアプリ開発が可能であることを実感していただけたなら幸いです。
