SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Pythonで学ぶバックエンド開発

【PythonとJavaScriptのデータ連携】座標をPOSTしてSQLiteへ保存する総仕上げ

Pythonで学ぶバックエンド開発 第8回

お絵描きデータをデータベースに保存する

 次の図のように、POST送信された各データ(タイトル、名前、コメント、お絵描きデータ)を受け取り、データベースのarticleテーブルへ保存する処理を実装します。

 pages/draw.pyファイルを以下のように修正してください。実装後は、Apache(Webサーバ)を起動してブラウザからアクセスします。トップページからDRAWページへ遷移し、絵を描いて各項目を入力後、送信ボタンを押してください。データが正常に保存され、トップページの記事一覧に追加されていれば成功です。確認後は、必要に応じてWebサーバを停止させてください。

お絵描きしたベジェ曲線をデータベースに保存
お絵描きしたベジェ曲線をデータベースに保存
サンプルコード「pages」→「draw.py」ファイル
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で学ぶバックエンド開発連載記事一覧

もっと読む

この記事の著者

大西 武(オオニシ タケシ)

 1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書などを30冊以上商業出版する作家。ドコモでグランプリなどコンテストに20回以上入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」がTVで約10回出題。プロフィールサイト:https://profile.vixar.jp

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/22091 2025/12/04 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング