python

[Flask] (5) RDB - Flask Connection & κ²Œμ‹œνŒ 예제

Meng's Computer 2021. 1. 25. 02:45

πŸ“ RDB

λ°μ΄ν„°λ² μ΄μŠ€(DataBase)의 μ’…λ₯˜λŠ” 크게 1. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(RDB, 2. NoSQL(Not Only SQL)둜 λ‚˜λ‰œλ‹€.

RDB(Relation Database)λŠ” κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ„ 기반으둜 ν•œ 데이터 λ² μ΄μŠ€λ‹€.
λ‹€μ‹œ 말해, ν‚€(Key) - κ°’(Value)λ“€μ˜ κ°„λ‹¨ν•œ 관계λ₯Ό ν…Œμ΄λΈ”ν™”ν•œ λ°μ΄ν„°λ² μ΄μŠ€λ‹€. RDBλŠ” λ‹€μŒ νŠΉμ§•μ„ κ°€μ§„λ‹€.

  • 데이터 독립성이 λ†’λ‹€.
  • κ³ μˆ˜μ€€μ˜ DML을 μ‚¬μš©ν•΄μ„œ, κ²°ν•©, μ œμ–‘, 투영 λ“±μ˜ 관계 μ‘°μž‘μ— μ˜ν•΄ λΉ„μ•½μ μœΌλ‘œ ν‘œν˜„ λŠ₯λ ₯을 높일 수 μžˆλ‹€.
  • μ΄λ“€μ˜ 관계 μ‘°μž‘μ— μ˜ν•΄ 자유둭게 ꡬ쑰λ₯Ό λ³€κ²½ν•  수 μžˆλ‹€.

πŸ’‘ RDB의 μ’…λ₯˜

  • Oracle
  • MySQL
  • MS-SQL
  • DB2
  • Maria DB
  • Derby
  • SQLite

 

πŸ“ RDB와 Flask의 μƒν˜Έμž‘μš©

Flaskμ—μ„œ RDBλ₯Ό μ—°λ™ν•˜λ©΄ μ–΄λ–»κ²Œ 될까 ? Flaskμ—μ„œ μž…λ ₯ 받은 λ‚΄μš©λ“€μ„ DB에 μ €μž₯ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

= 효율적인 데이터 관리 κΈ°λŠ₯ 제곡

νŒŒμ΄μ¬μ€ μ˜€ν”ˆ μ†ŒμŠ€μ™€ μƒμš© λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ λŒ€λΆ€λΆ„μ˜ λ°μ΄ν„°λ² μ΄μŠ€ 엔진을 μœ„ν•œ νŒ¨ν‚€μ§€λ₯Ό κ°€μ§€κ³  μžˆλ‹€.
μ•žμœΌλ‘œμ˜ ν¬μŠ€νŒ…μ—μ„œλŠ” κ·Έ 쀑, sqlite3 와 Flask μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ•ˆμ— μžˆλŠ” SQLAlchemyλ₯Ό μ‚¬μš©ν•΄μ„œ μ§„ν–‰ν•œλ‹€.

SQLAlchemyλŠ” 파이썬 μ½”λ“œμ— DB와 μ—°κ²°ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬λ‹€.

[ 좜처 : elice ]

 

πŸ“ Flask - RDB 예제 : κ²Œμ‹œνŒ κ΅¬ν˜„ν•˜κΈ°

πŸ’‘ DB μ‚¬μš©μž μΆ”κ°€

from flask import Flask, render_template, request, url_for, redirect
import sqlite3 # salite3

app = Flask(__name__)
conn = sqlite3.connect("database.db")   # splite3 db μ—°κ²°
print("Opened database successfully")
conn.execute("CREATE TABLE IF NOT EXISTS Board(name TEXT, context TEXT)")   # Board λΌλŠ” DB생성
print("TABLE Created Successfully")
name = [
    ["Elice", 15],
    ["Dodo", 16],
    ["checher", 17],
    ["Queen", 18]
]
for i in range(len(name)):
    conn.execute(f"INSERT INTO Board(name,context) VALUES('{name[i][0]}', '{name[i][1]}')")  # Board DB에 데이터 μ‚½μž…
conn.commit()   # μ§€κΈˆκ» μž‘μ„±ν•œ SQL, DB에 반영 commit
conn.close()    # μž‘μ„± λ‹€ν•œ DBλŠ” λ‹«μ•„μ€˜μ•Όν•¨ close

# ================= μ—¬κΈ°μ„œλΆ€ν„°λŠ” λ‹€μ‹œ Flask μ˜μ—­ ==========================

@app.route('/')
def board():
    con = sqlite3.connect("database.db")
    cur = con.cursor()
    cur.execute("SELECT * FROM Board")
    rows = cur.fetchall()

    print("DB: ")
    for i in range(len(rows)):
        print(rows[i][0] + ':' + rows[i][1])
    return render_template("board1.html", rows = rows)


@app.route("/search", methods=["GET","POST"])
def search():
    if request.method == "POST":
        name = request.form["name"] # search.html 가보면, form에 name만 λ°›κΈ°λ‘œ 함.
        con = sqlite3.connect("database.db")
        cur = con.cursor()
        cur.execute(f"SELECT * FROM Board WHERE name='{name}'")
        rows = cur.fetchall()
        print("DB : ")
        for i in range(len(rows)):
            print(rows[i][0] + ':' + rows[i][1])
        return render_template("search.html", rows=rows)
    else:
        return render_template("search.html")

@app.route("/add", methods=["GET","POST"])
def add():
    if request.method == "POST":
        try:
            name = request.form["name"]
            context = request.form["context"]

            # DB에 μ ‘κ·Όν•΄μ„œ, 데이터λ₯Ό μ‚½μž…ν• λ•ŒλŠ”, 직접 DBλ₯Ό μ—΄μ–΄μ•Όλ˜λŠ”λ°, μœ— κ³Όμ •μ²˜λŸΌ, closeκΉŒμ§€ ν•˜κΈ° νž˜λ“œλ‹ˆκΉ, ν•˜λŠ” 방식, κ²°κ³ΌλŠ” 같은 것 !
            with sqlite3.connect("database.db") as con:
                cur = con.cursor()
                cur.execute(f"INSERT INTO Board(name,context) VALUES('{name}','{context}')")
                con.commit()
        except:
            con.rollback()  # DB λ‘€λ°±ν•¨μˆ˜, SQL이 였λ₯˜λ‚˜λ©΄, λ°˜μ˜μ „, 이전 μƒνƒœλ‘œ λŒλ¦¬λŠ” 것
        finally:
            return redirect(url_for("board"))
    else:
        return render_template("add.html")


if __name__ == '__main__':
    app.run()
<!-- ./templates/board1.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <h3>κ²Œμ‹œνŒ</h3>
    <h4><a href="{{url_for('add')}}">μΆ”κ°€</a> <a href="{{url_for('search')}}">검색</a><br><br>λͺ©λ‘</h4>
    <table border=1 width="600" align="center">
        <thead>
            <td>이름</td>
            <td>λ‚΄μš©</td>
        </thead>
        {% for row in rows %}
        <tr>
            <td>{{ row[0] }}</td>
            <td>{{ row[1] }}</td>
        </tr>
        {% endfor %}
    </table>
</body>

</html>
<!-- ./templates/add.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <h3>κ²Œμ‹œνŒ</h3>
    <h4>μΆ”κ°€</h4>
    <form action="/add" method="POST">
        이름<br>
        <input type="text" name="name" /><br>
        λ‚΄μš©<br>
        <input type="text" name="context" style="text-align:center; width:400px; height:100px;" /><br><br>
        <input type="submit" value="게 μ‹œ" /><br>
    </form>
</body>

</html>
<!-- ./templates/search.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <form action="/search" method="POST">
        <input type="text" name="name" />
        <input type="submit" value="κ²€ 색" /><br>
    </form>
    <h4>검색결과</h4>
    {% if rows%}
    <table border=1 width="600" align="center">
        <thead>
            <td>이름</td>
            <td>λ‚΄μš©</td>
        </thead>
        {% for row in rows %}
        <tr>
            <td>{{ row[0] }}</td>
            <td>{{ row[1] }}</td>
        </tr>
        {% endfor %}
        {% else %}
        <p> 검색결과가 μ—†μŠ΅λ‹ˆλ‹€. </p>
        {% endif %}
    </table>
</body>

</html>

[ 좜처 : elice ]

 

πŸ’‘ 쀑볡 μ‚¬μš©μž μ œμ–΄ ( μœ„μ—, DB μ‚¬μš©μž μΆ”κ°€μ—μ„œ λ³€ν•œ μ½”λ“œλŠ” λͺ‡ μ—†μŒ

from flask import Flask, render_template, request, url_for, redirect
import sqlite3 # salite3

app = Flask(__name__)
conn = sqlite3.connect("database.db")   # splite3 db μ—°κ²°
print("Opened database successfully")
conn.execute("CREATE TABLE IF NOT EXISTS Board(name TEXT, context TEXT)")   # Board λΌλŠ” DB생성
print("TABLE Created Successfully")
name = [
    ["Elice", 15],
    ["Dodo", 16],
    ["checher", 17],
    ["Queen", 18]
]
for i in range(len(name)):
    conn.execute(f"INSERT INTO Board(name,context) VALUES('{name[i][0]}', '{name[i][1]}')")  # Board DB에 데이터 μ‚½μž…
conn.commit()   # μ§€κΈˆκ» μž‘μ„±ν•œ SQL, DB에 반영 commit
conn.close()    # μž‘μ„± λ‹€ν•œ DBλŠ” λ‹«μ•„μ€˜μ•Όν•¨ close

# ================= μ—¬κΈ°μ„œλΆ€ν„°λŠ” λ‹€μ‹œ Flask μ˜μ—­ ==========================

@app.route('/')
def board():
    con = sqlite3.connect("database.db")
    cur = con.cursor()
    cur.execute("SELECT * FROM Board")
    rows = cur.fetchall()

    print("DB: ")
    for i in range(len(rows)):
        print(rows[i][0] + ':' + rows[i][1])
    return render_template("board1.html", rows = rows)


@app.route("/search", methods=["GET","POST"])
def search():
    if request.method == "POST":
        name = request.form["name"] # search.html 가보면, form에 name만 λ°›κΈ°λ‘œ 함.
        con = sqlite3.connect("database.db")
        cur = con.cursor()
        cur.execute(f"SELECT * FROM Board WHERE name='{name}'")
        rows = cur.fetchall()
        print("DB : ")
        for i in range(len(rows)):
            print(rows[i][0] + ':' + rows[i][1])
        return render_template("search.html", rows=rows)
    else:
        return render_template("search.html", msg ="검색어λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.")

@app.route("/add", methods=["GET","POST"])
def add():
    if request.method == "POST":

        name = request.form["name"]
        context = request.form["context"]

        # DB에 μ ‘κ·Όν•΄μ„œ, 데이터λ₯Ό μ‚½μž…ν• λ•ŒλŠ”, 직접 DBλ₯Ό μ—΄μ–΄μ•Όλ˜λŠ”λ°, μœ— κ³Όμ •μ²˜λŸΌ, closeκΉŒμ§€ ν•˜κΈ° νž˜λ“œλ‹ˆκΉ, ν•˜λŠ” 방식, κ²°κ³ΌλŠ” 같은 것 !
        with sqlite3.connect("database.db") as con:
            cur = con.cursor()
            cur.execute(f"SELECT count(*) FROM Board WHERE name='{name}'")
            
            # νšŒμ› ν•œλͺ…, 좔가할라 ν–ˆλŠ”λ°, 그전에 λ“€μ–΄μ˜¨, nameκ°’μ΄λž‘ 같은 이름이 DB에 있으면, μ€‘λ³΅νšŒμ›μžμ΄λ―€λ‘œ, λͺ»ν•˜κ²Œ μ œμ–΄ν•¨
            if cur.fetchall()[0][0] == 0:   # 쀑볡이름이 μ—†μœΌλ©΄
                cur.execute(f"INSERT INTO Board(name,context) VALUES('{name}','{context}')")
                con.commit()
                cur.execute("SELECT * FROM Board")
                rows = cur.fetchall()
                return render_template("board1.html",rows= rows)        
            else:   # 쀑볡이름이 있으면
                return render_template("add.html",msg = "μ€‘λ³΅μ‚¬μš©μžκ°€ μžˆμŠ΅λ‹ˆλ‹€.")
    else:
        return render_template("add.html")


if __name__ == '__main__':
    app.run()
<!-- ./templates/board1.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <h3>κ²Œμ‹œνŒ</h3>
    <h4><a href="{{url_for('add')}}">μΆ”κ°€</a> <a href="{{url_for('search')}}">검색</a><br><br>λͺ©λ‘</h4>
    <table border=1 width="600" align="center">
        <thead>
            <td>이름</td>
            <td>λ‚΄μš©</td>
        </thead>
        {% for row in rows %}
        <tr>
            <td>{{ row[0] }}</td>
            <td>{{ row[1] }}</td>
        </tr>
        {% endfor %}
    </table>
</body>

</html>
<!-- ./templates/add.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <h3>κ²Œμ‹œνŒ</h3>
    <h4>μΆ”κ°€</h4>
    <form action="/add" method="POST">
        이름<br>
        <input type="text" name="name" /><br>
        λ‚΄μš©<br>
        <input type="text" name="context" style="text-align:center; width:400px; height:100px;" /><br><br>
        <input type="submit" value="게 μ‹œ" /><br>
    </form>
    {% if msg %}
    <p> {{ msg }} </p>
    {% endif %}
</body>

</html>
<!-- ./templates/reaserch.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <form action="/search" method="POST">
        <input type="text" name="name" />
        <input type="submit" value="κ²€ 색" /><br>
    </form>
    <h4>검색결과</h4>
    {% if rows%}
    <table border=1 width="600" align="center">
        <thead>
            <td>이름</td>
            <td>λ‚΄μš©</td>
        </thead>
        {% for row in rows %}
        <tr>
            <td>{{ row[0] }}</td>
            <td>{{ row[1] }}</td>
        </tr>
        {% endfor %}
        {% elif msg %}
        <p> {{ msg }} </p>
        {% else %}
        <p> 검색결과가 μ—†μŠ΅λ‹ˆλ‹€. </p>
        {% endif %}
    </table>
</body>

</html>

[ 좜처 : elice ]

 

πŸ’‘ κ²Œμ‹œνŒ λ‚΄μš© 생성 및 쑰회

μœ„μ—μ„œ, DB μ‚¬μš©μž 생성, μ€‘λ³΅μ œκ±° λ‚΄μš©κ³Ό 동일

 

πŸ’‘ κ²Œμ‹œνŒ λ‚΄μš© μˆ˜μ • 및 μ‚­μ œ

#DATABASE
from flask import Flask, render_template, request, url_for, redirect
import sqlite3
app = Flask(__name__)
conn = sqlite3.connect('database.db')
print ("Opened database successfully")
conn.execute("DROP TABLE IF EXISTS Board")  # Board ν…Œμ΄λΈ”μ΄ 기쑴에 μžˆλ‹€λ©΄ μ‚­μ œ (맀번, λ™μΌν•œ νŒŒμΌμ—μ„œ μ‹€ν–‰ν•˜λ©΄, λ‚΄μš©μ΄ κ²Ήμ³μ„œ λ§Œλ“¦)
conn.execute('CREATE TABLE IF NOT EXISTS Board (name TEXT, context TEXT)')  # Board ν…Œμ΄λΈ”μ΄ 기쑴에 μ—†λ‹€λ©΄ 생성
print ("Table created successfully")
name = [['Elice', 15], ['Dodo', 16], ['Checher', 17], ['Queen', 18]]
for i in range(4):
    conn.execute(f"INSERT INTO Board(name, context) VALUES('{name[i][0]}', '{name[i][1]}')")
conn.commit()
conn.close()

# root = home
@app.route('/')
def board():
    con = sqlite3.connect("database.db")
    cur = con.cursor()
    cur.execute("select * from Board")
    rows = cur.fetchall()
    print("DB:")
    for i in range(len(rows)):
            print(rows[i][0] + ':' + rows[i][1])
    return render_template('board1.html', rows = rows)

# κ²Œμ‹œλ¬Ό 쑰회 (Read)
@app.route('/search', methods = ['GET', 'POST'])
def search():
    if request.method == 'POST':
        name = request.form['name']
        con = sqlite3.connect("database.db")
        cur = con.cursor()
        cur.execute(f"SELECT * FROM Board WHERE name='{name}' or context='{name}'")
        rows = cur.fetchall()
        print("DB:")
        for i in range(len(rows)):
            print(rows[i][0] + ':' + rows[i][1])
        return render_template('search.html', rows = rows)
    else:
        return render_template('search.html')

# κ²Œμ‹œλ¬Ό 생성 (Create)
@app.route('/add', methods = ['GET', 'POST'])
def add():
    if request.method == 'POST':
        try:
            name = request.form['name']
            context = request.form['context']
            with sqlite3.connect("database.db") as con:
                cur = con.cursor()
                cur.execute(f"INSERT INTO Board (name, context) VALUES ('{name}', '{context}')")
                con.commit()
        except:
            con.rollback()
        finally : 
            con.close()
            return redirect(url_for('board'))
    else:
        return render_template('add.html')
# μœ„μ— 쑰회, 생성은 이전과 동일 

# κ²Œμ‹œλ¬Ό λ‚΄μš© κ°±μ‹ (Update)
@app.route("/update/<uid>", methods=["GET","POST"])
def update(uid):
    if request.method == "POST":
        name = request.form["name"]
        context = request.form["context"]
        
        # λ‚΄μš© κ°±μ‹ ν•˜κ³ 
        with sqlite3.connect("database.db") as con:
            cur = con.cursor()  # connectionν•œ db에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄, cursor 객체 λ§Œλ“€κΈ°
            cur.execute(f"UPDATE Board SET name='{name}', context='{context}' WHERE name='{uid}'")
            con.commit()

        return redirect(url_for("board"))   # κ°±μ‹ λ˜μ—ˆλŠ”μ§€, boardν•¨μˆ˜ λ¦¬λ‹€μ΄λ ‰νŠΈν•΄μ„œ, / νŽ˜μ΄μ§€ λ Œλ”λ§
    else:
        con = sqlite3.connect("database.db")
        cur = con.cursor()
        cur.execute(f"SELECT * FROM Board WHERE name='{uid}'")
        row = cur.fetchall()
        return render_template("update.html",row=row)

@app.route("/delete/<uid>")
def delete(uid):
    # λ“€μ–΄μ˜¨ uid κ°’μ΄λž‘ nameμ΄λž‘ delete μ—°μ‚°ν•˜κ³  반영
    with sqlite3.connect("database.db") as con:
        cur = con.cursor()
        cur.execute(f"DELETE FROM Board WHERE name='{uid}'")
        con.commit()

    return redirect(url_for('board'))  # μ‚­μ œ λ°˜μ˜ν•˜κ³ , λ°˜μ˜λ¬λŠ”μ§€, boardν•¨μˆ˜ λ¦¬λ‹€μ΄λ ‰νŠΈ, / νŽ˜μ΄μ§€ λ Œλ”λ§

if __name__ == '__main__':
    app.run()
<!-- ./templates/board1.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <h3>κ²Œμ‹œνŒ</h3>
    <h4><a href="{{url_for('add')}}">μΆ”κ°€</a> <a href="{{url_for('search')}}">검색</a><br><br>λͺ©λ‘</h4>
    <table border=1 width="600" align="center">
        <thead>
            <td>이름</td>
            <td>λ‚΄μš©</td>
            <td>μˆ˜μ •/μ‚­μ œ</td>
        </thead>
        {% for row in rows %}
        <tr>
            <td>{{ row[0] }}</td>
            <td>{{ row[1] }}</td>
            <td><a href="{{url_for('update', uid = row[0])}}">μˆ˜μ •</a> <a
                    href="{{url_for('delete', uid = row[0])}}">μ‚­μ œ</a></td>
        </tr>
        {% endfor %}
    </table>
</body>

</html>
<!-- ./templates/add.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <h3>κ²Œμ‹œνŒ</h3>
    <h4>μΆ”κ°€</h4>
    <form action="/add" method="POST">
        이름<br>
        <input type="text" name="name" /><br>
        λ‚΄μš©<br>
        <input type="text" name="context" style="text-align:center; width:400px; height:100px;" /><br><br>
        <input type="submit" value="게 μ‹œ" /><br>
    </form>
</body>

</html>
<!-- ./templates/research.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <form action="/search" method="POST">
        <input type="text" name="name" />
        <input type="submit" value="κ²€ 색" /><br>
    </form>
    <h4>검색결과</h4>
    {% if rows%}
    <table border=1 width="600" align="center">
        <thead>
            <td>이름</td>
            <td>λ‚΄μš©</td>
        </thead>
        {% for row in rows %}
        <tr>
            <td>{{ row[0] }}</td>
            <td>{{ row[1] }}</td>
        </tr>
        {% endfor %}
        {% else %}
        <p> 검색결과가 μ—†μŠ΅λ‹ˆλ‹€. </p>
        {% endif %}
    </table>
</body>

</html>
<!-- ./templates/update.html -->

<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>SQLite3 κ²Œμ‹œνŒ 등둝</title>

    <style type="text/css">
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <h3>κ²Œμ‹œνŒ</h3>
    <h4>μˆ˜μ •</h4>
    <form action="" method="POST">
        이름<br>
        <input type="text" name="name" /><br>
        λ‚΄μš©<br>
        <input type="text" name="context" style="text-align:center; width:400px; height:100px;" /><br><br>
        <input type="submit" value="수 μ •" /><br>
    </form>
    <h4>κΈ°μ‘΄</h4>
    <table border=1 width="600" align="center">
        <thead>
            <td>이름</td>
            <td>λ‚΄μš©</td>
        </thead>
        <tr>
            <td>{{ row[0][0] }}</td>
            <td>{{ row[0][1] }}</td>
        </tr>
    </table>
</body>

</html>

[ 좜처 : elice ]

 

728x90
λ°˜μ‘ν˜•