2021. 11. 6. 21:59ㆍ작업/Flask
----------------------------7주차 2-1 ( RDB로 리소스 관리 및 저장하기 )--------------------
# 데이터베이스의 종류와 특징, Flask에서 DB가 하는 역할, JWT란?
#데이터베이스 : 데이터를 저장하는 공간, 관계형 데이터베이스(RDB)와 NoSQL(Not Only SQL)로 나뉘어져 있다.
#관계형 데이터베이스 : key와 value들의 간단한 관계를 테이블 화 시킨 데이터베이스
- 정형화 되어있다. DML을 사용해서 데이터 간 결합(외래키,유일키) , 제약조건 등 설정 가능. 테이블 간 데이터 관계 설정 가능
로그인 : 브라우저에서 사용자가 Id,PW 입력, 서버에서 API가 database내의 Id와 PW와 같은지 확인,
만약 같다면 cookie나 session 등으로 인증완료 응답을 해줌.
게시판 읽기 : 브라우저에서 사용자가 요청, 서버에서 API가 database내에 있는 게시글을 불러와서 브라우저에게 전달.
# 간단한 게시판 만들기
사용자 검색, 사용자 추가(중복 사용자 방지), 게시판 CRUD
# 게시판 등록
con=sqlite3.connect(정보)
# Create
cur.excute( " INSERT INTO board(name,context) values(?,?) " , (name,context) )
# Read
cur.excute( " SELECT * FROM board WHERE name=name, context=context" )
실습 1 사용자 정보 검색 con, cur fetchall 시작
실습 2 DB 사용자 추가 request.method , request.form , redirect(url_for('어쩌구.html의 html생략'))
실습 3 중복 사용자 방지 cur.execute(f"SELECT ~~ WHERE name='{name}'")
실습 4 게시판 내용 수정 및 삭제 cur.execute(f"DELETE ~~ WHERE name='{uid}'")
# Flask JWT
JWT JSON Web Token, Token은 인증 매개체라고 생각하면 됨. 암호화되어있기 때문에 안전. Base64로 인코딩되어 표현.
# Header: typ 타입과 alg 알고리즘 저장.
# Payload: 토큰에서 사용할 정보의 조각들인 클레임(Claim)이 담겨있다. 클레임은 registered, public, private claim이 있다.
- registered 클레임는 등록된,이미 정해진 종류의 데이터이다. 토큰 발급자, 토큰 제목, 대상자, exp(만료시간), iat(issued at) ,고유식별자 jti
- 공개 클레임 : 충돌이 방지된 이름
- 비공개 클레임 : 서버와 클라이언트 협의로 사용되는 클래임. 이름이 중복되어 충돌 간으하니 유의
# Signature: 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드
실습 5 JWT를 이용한 로그인 토큰 발급 jwt.encode
등록된 아이디와 패스워드를 쳤을 경우
등록되지 않은 이상한 아이디,비번 친 경우
------------------------------7주차 2-2 ( SQL Alchemy와 Query )----------------------------
# SQL Alchemy와 ORM
- SQL ALchemy : 모듈
- ORM : 데이터베이스를 다루는 형태
# DB와 Model
# Query
- SQL : SELECT, INSERT ,UPDATE, DELETE
- ORM (models.py) : SQL(DB)을 Model을 사용해 python코드로 객체(클래스)를 통해 쓰는 느낌?
ex INSERT INTO 테이블 (키) VALUES (값); ->
#SQL Alchmy : ORM을 쓸 수 있도록 도와주는 python 라이브러리
- DB와 server간의 connection과 DB data의 CRUD를 도와줌.
VARCHAR(20) 이런 느낌
실습 1 Model 만들기 db.session.add( 변수 ) db.session.query( 클래스 ).all()
실습 2 입력한 데이터를 model을 사용하여 자료 추가 Member( request.form['name'], request.form['name'])
# Query - CRUD 예제
# Create
# Update( read 후 수정 )
# Delete( read 후 삭제 )
Query 사용법들
Member.query 랑 같은 것 db.session.query
limit
offset
count
실습 3 equal, not equal, like
실습 4 in , not in
실습 5 is null, is not null
실습 6 and or
실습 7 order by
실습 8 .limit().offset() , 쿼리문 실행결과.count()
'작업 > Flask' 카테고리의 다른 글
21.11.07 7주차 모의테스트 (0) | 2021.11.07 |
---|---|
21.11.05 7주차 2-3 REST API와 테스팅 (0) | 2021.11.06 |
21.11.05 jinja와 flask 사용 배달의 토끼 필기 (0) | 2021.11.05 |
21.11.03 7주차 1-2 서비스 다루기 (0) | 2021.11.03 |
21.11.03 7주차 1-1 Flask 시작하기 (0) | 2021.11.03 |