본문 바로가기
PRACTICE/Basic

[Flask] SQLAlchemy 사용하여 학생테이블 출력하기

by 1005 2020. 11. 25.

 

< 폴더 경로 >

app.py파일을 실행하면 student_info.db 파일이 생성된다. 

 

 

 

< new.html >

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
   <body>
      <h3>Students - Flask SQLAlchemy example</h3>
      <hr/>
      <form action = "{{ request.path }}" method = "post">
         <label for = "name">Name</label><br>
         <input type = "text" name = "name" placeholder = "Name" /><br>
 
         <label for = "city"">City</label><br>
         <input type = "text" name = "city" placeholder = "city" /><br>
 
         <label for = "addr">Addr</label><br>
         <textarea name = "addr" placeholder = "addr"></textarea><br>
 
         <label for = "PIN">PIN</label><br>
         <input type = "text" name = "pin" placeholder = "pin" /><br>
 
         <input type = "submit" value = "Submit" />
      </form>
   </body>
</html>
 

 

 

< show_all.html >

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE html>
<html lang = "en">
   <head></head>
   <body>
      <h3>
         <a href = "{{ url_for('show_all') }}">Comments - Flask SQLAlchemy example</a>
      </h3>
      
      <hr/>
      {%- for message in get_flashed_messages() %}
         {{ message }}
      {%- endfor %}
        
      <h3>Students (<a href = "{{ url_for('new') }}">Add Student
         </a>)</h3>
      
      <table border="1">
         <thead>
            <tr>
               <th>Name</th>
               <th>City</th>
               <th>Address</th>
               <th>Pin</th>
            </tr>
         </thead>
         <tbody>
            {% for student in students %}
               <tr>
                  <td>{{ student.name }}</td>
                  <td>{{ student.city }}</td>
                  <td>{{ student.addr }}</td>
                  <td>{{ student.pin }}</td>
               </tr>
            {% endfor %}
         </tbody>
      </table>
   </body>
</html>
 

 

 

< app.py >

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from flask import Flask, request, flash
from flask import url_for, redirect, render_template
from flask_sqlalchemy import SQLAlchemy
 
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'= 'sqlite:///student_info.db' #가상의 db생성 
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'= False 
app.config['SECRET_KEY'= "random string"
 
db = SQLAlchemy(app)
 
class students(db.Model): 
    #db스키마 지정
    id = db.Column('student_id', db.Integer, primary_key = True)
    name = db.Column(db.String(100))
    city = db.Column(db.String(50))
    addr = db.Column(db.String(200)) 
    pin = db.Column(db.String(10))
 
    def __init__(self, name, city, addr, pin):
        self.name = name
        self.city = city
        self.addr = addr
        self.pin = pin
 
@app.route('/')
def show_all():
    return render_template('show_all.html', students = students.query.all() )
 
@app.route('/new', methods = ['GET''POST'])
def new():
    if request.method == 'POST':
        student = students(request.form['name'], request.form['city'],
        request.form['addr'], request.form['pin'])
         
        db.session.add(student)
        db.session.commit()
        flash('Record was successfully added')
        return redirect(url_for('show_all'))
    return render_template('new.html')
 
if __name__ == '__main__':
    db.create_all()
    app.run(host='0.0.0.0', port = 80, debug = True)

 

 

실행 첫 화면에서는 테이블에 데이터가 없다.

 

 

 

Add Student를 눌러 데이터를 입력하면,

 

 

 

테이블에 데이터가 들어간 것을 확인 할 수 있다.

 

 

댓글