파이썬은 상용 DB 대부분의 관리 패키지를 가지고 있다. Sqlite3를 이용한 플라스크 DB 연동을 연습해보자. Sqlite3는 응용프로그램 내에 넣어 사용할 수 있는 비교적 가벼운 데이터베이스이다.
from flask import Flask, render_template, request, url_for, redirect
import sqlite3 # sqlite를 import
app = Flask(__name__)
value = [['Elice', 15], ['Dodo', 16], ['Checher', 17], ['Queen', 18]]
# DB와 연결
conn = sqlite3.connect('database.db')
conn.execute('CREATE TABLE IF NOT EXISTS Board (name TEXT, context TEXT)')
for i in range(4):
conn.execute(f"INSERT INTO Board(name, context) VALUES('{value[i][0]}', '{value[i][1]}')")
conn.commit()
conn.close()
# DB를 사용하기 위해서는 객체를 생성해 connect()로 연결을 하고 사용이 끝나면 close()로 연결을 해제해야한다.
# 이런 번거로운 작업은 with으로 감싸 해결할 수 있다. 위와 같은 코드를 리팩토링한다면 다음과 같다.
with sqlite3.connect('database.db') as con:
conn.execute('CREATE TABLE IF NOT EXISTS Board (name TEXT, context TEXT)')
for i in range(4):
conn.execute(f"INSERT INTO Board(name, context) VALUES('{value[i][0]}', '{value[i][1]}')")
conn.commit()
@app.route('/')
def board():
con = sqlite3.connect("database.db")
cur = con.cursor()
cur.execute("select * from Board")
rows = cur.fetchall()
con.close()
print("DB:")
for i in range(len(rows)):
print(rows[i][0] + ':' + rows[i][1])
return render_template('board.html', rows = rows)
if __name__ == '__main__':
app.run(debug=True)
일단 JWT란 JSON Web Toke으로 Json포맷을 이용해 사용자에 대한 속성을 저장하는 Base64로 인코딩된 웹 토큰으로, 토큰 자체가 정보로 사용되는 Self-Contained 방식으로 정보를 전달한다. 기본적으로 Header.Payload.Signature 로 구성되며 각각 토큰의 타입과 알고리즘, 정보, 인코딩 값과 관련된 비밀키 등을 의미한다.
위치 | 정보 |
---|---|
Header | {"typ":"JWT", "alg":"HS256"} |
Payload | 등록된 클레임 : 정해진 데이터; 발급자, 제목, 대상자, 만료기간, 발급시기, 고유식별자 공개 클레임 : 충돌 방지된 이름 비공개 클레임 : 서버와 클라리언트간 임의로 지정한 정보 |
Signature | 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드 |
파이썬에서 사용해보자
import jwt
data = {"name": "elice"}
secret = "secret"
algorithm = "HS256"
encoded = jwt.encode(data, secret, algorithm=algorithm)
decoded = jwtdecode(encoded, secret, algorithms=[algorithm])
#엘리스 #엘카데미 #엘리스코딩 #엘리스아카데미 #엘카데미후기 #엘카데미이벤트 #엘리스출석챌린지 #코딩이벤트 #무료코딩