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..
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..
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..
1. HTTP(HyperText Transfer Protocol): 웹 서버와 클라이언트가 리소스를 교환하기 위해 사용하는 프로토콜. 클라이언트가 요청하면, 서버가 응답하는 방식. 프로토콜(Protocol): 규격화된 상호작용에 적용되는 약속 2. HTTP 메시지: HTTP 서버와 클라이언트가 교환하는 데이터. 헤드와 바디로 구성되며, 각 줄은 CRLF로 구분됨. 헤드: 메시지에 대한 정보. 헤드의 끝에는 CRLF가 한 줄 있음. CRLF(Carriage Return / Line Feed)를 의미하며 키보드의 엔터키와 동일한 기능("개행", "줄 바꿈") 바디: 클라이언트가 서버에게, 또는 서버가 클라이언트에게 전달할 데이터 3. HTTP 요청(Request): 클라이언트가 서버에게 특정 동작을 요청하는..
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 ..
터미널로 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..
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인 행만 조회한다. ..
맥 환경에서 SQLite3 터미널 설치가 목표 1. 구글에서 homebrew 검색 후 홈페이지 접속 https://brew.sh/index_ko 2. homebrew 설치하기를 복사 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 3. 터미널을 열고 복사한 값을 입력 4. 비밀번호 입력창에 컴퓨터 비밀번호를 입력 후 RETURN 글 나오면 엔터 5. 설치가 끝나면 터미널을 닫고 다시 터미널을 재실행 6. brew list를 터미널에 입력하고 sqlite가 있는지 확인 만약 sqlite가 없다면? # 터미널 창에서 해당 문장 입력 brew install sqlite 7. 터미널에 sq..
윈도우 환경에서 SQLite3 터미널 설치가 목표 1. 구글에서 sqlite 검색 후 홈페이지 접속 https://www.sqlite.org/index.html 2. Lastest Release 항목의 다운로드를 클릭 3. 3번째 항목을 클릭(전체의 번들을 제공) 4. 다운 후 압축을 풀고 해당 폴더의 이름을 sqlite3로 변경 5. 폴더를 C드라이브로 옮긴다. 폴더의 경로는 => C:\sqlite3 6. 시스템 속성의 환경 변수를 연다. 검색(시스템 환경 변수 편집) -> 시스템 속성 -> 고급 탭 -> 환경 변수 7. 경로를 수정한다. 시스템 변수 항목 -> Path 더블클릭 -> New 클릭 -> C:\sqlite3 붙혀넣기 후 OK 누르기 8. 명령프롬프트 열어서 sqlite3 입력 경로가 C\..
API를 만들어서 연결하는 함수 구현해보기 1. .py파일 생성 todoapp폴더 하위에 새로운 main.py를 생성한다.(31번, 32번 페이지 참조) 2. todoapp폴더 하위에 database.py의 Base와 models.py를 import 한다. import models from database import engine # models.py를 import 한다. # database.py에서 Base 변수를 import 한다. 3. engine을 통해 데이터베이스와 연결하고 데이터베이스에 선언한 테이블을 생성한다 models.Base.metadata.create_all(bind=engine) 메타데이터는 데이터를 기술하는 데이터를 설명하며, 메타데이터는 구성된 테이블, 열, 제약 조건 및 기타 ..