未来電子でインターンさせてもらっているものです。今回も前回に引き続き、データベース連携についてみていきます。
Pythonのデータベース連携についてみていきます。
前回の続きからなので、inputファイルで入力された情報を引き継いだ上で確認画面を表示させるのが目的です。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cgi
import sys
import io
import sqlite3
まずは上記の4つをインポートします。
form = cgi.FieldStorage()
name = form.getfirst('name','')
number = form.getfirst('number','')
age = form.getfirst('age','')
note = form.getfirst('note','')
これは先ほどのファイルのフォーム部分のname属性を使って入力値を変数に代入してテーブルにデータの挿入ができるようにする工程です。
conn = sqlite3.connect('sample.db')
c = conn.cursor()
# データの挿入
c.execute('INSERT INTO users(gakuseki,namae,nennrei,bikou) VALUES(?,?,?,?)',[number, name, age, note])
# 挿入した結果を保存(コミット)する
conn.commit()
# データベースへのアクセスが終わったら close する
conn.close()
この部分で疑問に思うのが、データの挿入の部分だと思います。
# データの挿入
c.execute('INSERT INTO users(gakuseki,namae,nennrei,bikou) VALUES(?,?,?,?)',[number, name, age, note])
これは、「テーブル名がusersであるカラム名がgakuseki、namae、nennrei、bikouであるテーブルに数値を入れていく。入れていく数字はユーザーの入力値であり、そこには変数number、name、age、noteが入る」ということです。
print(
"""
<html lang="ja">
<head>
<meta charset="utf-8">
<title>学生入力フォーム</title>
</head>
<body>
<h3>確認</h3>
<p>学籍番号</p>{0}<br>
<p>名前</P>{1}<br>
<p>年齢</p>{2}<br>
<p>備考</p>{3}<br>
<p>こちらでよろしいでしょうか</p>
<a href = "complete.py"> 送信 </a>
</body>
</html>
"""
.format(number,name,age,note)
)
HTML部分はこのような感じです。
フォーマット関数でリストの中の入力値をインデックスで取り出せるようにしてあります。
全体のコードとしてはこんな感じにしました。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cgi
import sys
import io
import sqlite3
#name属性を使って入力値を変数に代入してテーブルにデータの挿入ができるようにする。
form = cgi.FieldStorage()
name = form.getfirst('name','')
number = form.getfirst('number','')
age = form.getfirst('age','')
note = form.getfirst('note','')
conn = sqlite3.connect('sample.db')
c = conn.cursor()
# データの挿入
c.execute('INSERT INTO users(gakuseki,namae,nennrei,bikou) VALUES(?,?,?,?)',[number, name, age, note])
# 挿入した結果を保存(コミット)する
conn.commit()
# データベースへのアクセスが終わったら close する
conn.close()
# 以下のコードを書かないと、htmlとして読み込んでもらえない。
print("Content-type: text/html; charset=utf-8")
# htmlの部分。printでHTMLコードを表示させることで、ブラウザがHTMLコードとして認識してくれる。
print(
"""
<html lang="ja">
<head>
<meta charset="utf-8">
<title>学生入力フォーム</title>
</head>
<body>
<h3>確認</h3>
<p>学籍番号</p>{0}<br>
<p>名前</P>{1}<br>
<p>年齢</p>{2}<br>
<p>備考</p>{3}<br>
<p>こちらでよろしいでしょうか</p>
<a href = "complete.py"> 送信 </a>
</body>
</html>
"""
.format(number,name,age,note)
)
ブラウザではこのように表示されます。
今回はconfirm.pyファイルについてみていきました。次回はcomplete.pyファイルについてみていきます。
僕はプログラミング初心者なので間違っていることも多々あると思います。その場合は指摘していただけるとありがたいです。