개발로 자기계발
728x90
SMALL
article thumbnail
FastAPI Database Relationship / Foreign Key / Query- 42
Develop/FastAPI 2023. 1. 7. 16:21

데이터의 관계에 대해서 알아보는 것이 목표 1. 관계의 종류 참고 사이트 1) 1:1(하나의 레코드(행 데이터)가 다른 테이블의 레코드 한 개와 연결된 경우) 2) 1:N(하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우) - 정리하고 있는 FastAPI에서 주로 다루는 관계 - 대부분의 관계형 데이터베이스의 관계 3) N:N(여러개의 레코드가 다른 테이블의 여러 개의 레코드와 연결된 경우) 2. One To Many Relationship 테이블 관계도 테이블 구성 Users Todos 테이블 쿼리 ※ 1번 user가 할 일을 Todos에서 뽑고 싶을 때 select * from todos where owner=1; ※ 2번 user가 할 일을 Todos에서 뽑고 싶을 때 select * fr..

article thumbnail
JSON Web Token(JWT)
Develop/기초지식 2023. 1. 7. 12:41

1. JSON Web Token란? => 유저를 인증하고 식별하기 위한 토큰 기반 인증 => 흔하게 회원 인증 / 정보 교류에 쓰인다. JWT는 JSON 객체를 사용하는 쌍방 간의 데이터와 정보를 안전하게 전송하는 독립적인 방법이다. => 토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함 된다. 각각의 JWT는 전자서명이 가능하기 때문에 JWT는 신뢰할 수 있다. 이는 서버가 JWT의 변경이 된 사항들을 알 수 있게 한다. => 전자서명은 Header, Payload가 변조되었는지 확인하기 위해 사용되는 정보이며 JWT를 신뢰할 수 있는 토큰으로 사용할 수 있는 근거가 된다. JWT는 기본 인증 및 다이제스트 인증 방식과 다르게 권한 부여 방식이다. => 서버에서 세션을 계속해서 유지..

article thumbnail
FastAPI Delete Request를 통한 데이터 삭제 - 41
Develop/FastAPI 2023. 1. 4. 22:03

DELETE을 통해서 DB의 데이터를 삭제해보는 것이 목표 1. 데이터를 업데이트하기 위한 DELETE 함수 생성 #return값이 없을 때 @app.delete("/{todo_id}") async def delete_todo(todo_id: int, db: Session = Depends(get_db)): todo_model = db.query(models.Todos).filter(models.Todos.id == todo_id).first() if todo_model is None: raise http_exception() db.query(models.Todos).filter(models.Todos.id == todo_id).delete() #db.flush() db.commit() successfu..

article thumbnail
FastAPI Put Request를 통한 DB 업데이트 - 40
Develop/FastAPI 2023. 1. 4. 17:42

PUT을 통해서 데이터베이스에 데이터를 업데이트해보는 것이 목표 1. 데이터를 업데이트하기 위한 PUT 함수 생성 @app.put("/{todo_id}") async def update_todo(todo_id: int, todo: Todo, db: Session = Depends(get_db)): todo_model = db.query(models.Todos).filter(models.Todos.id == todo_id).first() if todo_model is None: raise http_exception() todo_model.title = todo.title todo_model.description = todo.description todo_model.priority = todo.priorit..

article thumbnail
FastAPI Post Request를 통한 DB 저장 - 39
Develop/FastAPI 2023. 1. 4. 14:40

POST를 통해서 데이터베이스에 데이터를 저장해보는 것이 목표 1. DB에 만들 Table(32페이지 참고)의 유효성 검사를 하기 위한 BaseModel 생성 from pydantic import BaseModel, Field from typing import Optional class Todo(BaseModel): title: str description: Optional[str] priority: int = Field(gt=0, lt=6, description="The priority must be between 1-5") complete: bool 2. 데이터를 생성하기 위한 POST 함수 생성 @app.post("/") async def create_todo(todo: Todo, db: Sessi..

article thumbnail
FastAPI sqlalchemy filter 사용하기(select) - 38
Develop/FastAPI 2023. 1. 1. 13:21

filter구문을 통해 원하는 id값의 데이터를 조회해보는 게 목표 1. 특정 id를 조회하는 함수 생성 @app.get("/todo/{todo_id}") async def read_todo(todo_id: int, db: Session = Depends(get_db)): todo_model = db.query(models.Todos).filter(models.Todos.id == todo_id).first() if todo_model is not None: #값이 있다면 return해라 return todo_model raise http_exception() def http_exception(): return HTTPException(status_code=404, detail="Todo not foun..

HTTP / HTTPS 대한 기본 정리
Develop/기초지식 2022. 12. 31. 16:02

1. HTTP(HyperText Transfer Protocol): 웹 서버와 클라이언트가 리소스를 교환하기 위해 사용하는 프로토콜. 클라이언트가 요청하면, 서버가 응답하는 방식. 프로토콜(Protocol): 규격화된 상호작용에 적용되는 약속 2. HTTP 메시지: HTTP 서버와 클라이언트가 교환하는 데이터. 헤드와 바디로 구성되며, 각 줄은 CRLF로 구분됨. 헤드: 메시지에 대한 정보. 헤드의 끝에는 CRLF가 한 줄 있음. CRLF(Carriage Return / Line Feed)를 의미하며 키보드의 엔터키와 동일한 기능("개행", "줄 바꿈") 바디: 클라이언트가 서버에게, 또는 서버가 클라이언트에게 전달할 데이터 3. HTTP 요청(Request): 클라이언트가 서버에게 특정 동작을 요청하는..

article thumbnail
FastAPI SessionLocal을 통한 테이블 읽기 - 37
Develop/FastAPI 2022. 12. 31. 15:00

SessionLocal을 이용해서 사전에 만들었던 todos 테이블을 읽어오는것이 목표 1. SessionLocal을 Import 한다.(31페이지 참고) from database import engine, SessionLocal 2. db connection 객체 만들기 def get_db(): try: db = SessionLocal() yield db finally: db.close() SessionLocal은 callable한 객체로 호출될 때마다 새로운 세션 객체들을 생성 callable이란? 호출가능한 클래스 인스턴스, 함수, 메서드 등 객체를 의미한다. get_db는 호출될 때마다 db라는 변수를 생성 생성된 변수 db는 데이터베이스 세션으로 작동하며 한 번의 db 연결동안 존재하며 db ..

article thumbnail
FastAPI SQLite3 Setting Up Todos - 36
Develop/FastAPI 2022. 12. 30. 23:48

터미널로 sqllite3 데이터베이스를 조작하는 것이 목표 파이썬 사용 툴: Pycharm / 운영체제: Mac 1. pycharm 터미널에서 데이터베이스 접속하기 해당 값을 입력 sqlite3 todos.db 2. 데이터베이스 내의 테이블을 확인 sqlite> .schema 3. 테이블에 데이터를 삽입해 보기 sqlite> insert into todos (title, description, priority, complete) values ('Go to the store', 'Pick up eggs', 5, False); sqlite> insert into todos (title, description, priority, complete) values ('Cut the lawn', 'Grass is g..

article thumbnail
FastAPI SQL Queries Introduction - 35
Develop/FastAPI 2022. 12. 30. 23:23

sql 쿼리 구문에 대한 간략한 소개 32번 페이지에서 만든 테이블로 조작 1. select #todos의 테이블 전체 열과 행을 조회한다. SELECT * FROME todos; #todos의 특정컬럼을 조회한다. #컬럼을 적은 순서대로 컬럼이 조회되서 나온다. SELECT title FROM todos; SELECT description FROM todos; SELECT title, description FROM todos; SELECT title, description, priority FROM todos; #todos의 특정값에 해당하는 데이터를 조회한다. #priority열의 값이 5인 행만 조회한다. #title열의 값이 Feed dog인 행만 조회한다. #id열의 값이 2인 행만 조회한다. ..

728x90
SMALL