[엘카데미 챌린지] 19일차

ㅅㅌㄹ·2023년 8월 4일
0

엘카데미 챌린지

목록 보기
19/21

오늘의 공부


파이썬은 상용 DB 대부분의 관리 패키지를 가지고 있다. Sqlite3를 이용한 플라스크 DB 연동을 연습해보자. Sqlite3는 응용프로그램 내에 넣어 사용할 수 있는 비교적 가벼운 데이터베이스이다.

Flask - 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)

Flask JWT

일단 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])

#엘리스 #엘카데미 #엘리스코딩 #엘리스아카데미 #엘카데미후기 #엘카데미이벤트 #엘리스출석챌린지 #코딩이벤트 #무료코딩

profile
언제나 첫걸음

0개의 댓글