1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonデータベース連携(confirm.py編)

Last updated at Posted at 2019-06-23

未来電子でインターンさせてもらっているものです。今回も前回に引き続き、データベース連携についてみていきます。

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)
)
スクリーンショット 2019-06-15 17.26.53.png

ブラウザではこのように表示されます。

今回はconfirm.pyファイルについてみていきました。次回はcomplete.pyファイルについてみていきます。

僕はプログラミング初心者なので間違っていることも多々あると思います。その場合は指摘していただけるとありがたいです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?