ダウンロード 第8回 サンプルコード (12.3 KB)
お絵描きデータをデータベースに保存する
次の図のように、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アプリ開発が可能であることを実感していただけたなら幸いです。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Pythonで学ぶバックエンド開発連載記事一覧
-
- 【PythonとJavaScriptのデータ連携】座標をPOSTしてSQLiteへ保存する...
- 【PythonとSQLiteで学ぶ「データの書き込み方法」】Web掲示板にコメント機能を実...
- 【トップページを実装しよう!】PythonとSQLで実装する「ホームページ」の仕組み
- この記事の著者
-
大西 武(オオニシ タケシ)
1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書などを30冊以上商業出版する作家。ドコモでグランプリなどコンテストに20回以上入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」がTVで約10回出題。プロフィールサイト:https://profile.vixar.jp
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
