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..
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) 메타데이터는 데이터를 기술하는 데이터를 설명하며, 메타데이터는 구성된 테이블, 열, 제약 조건 및 기타 ..
Sqlalchemy로 테이블 모델 클래스 구현해 보기 1. .py파일 생성 todoapp폴더 하위에 새로운 models.py를 생성한다.(31번 페이지 참조) 2. todoapp폴더 하위에 database.py의 Base를 import 한다. from database import Base # database.py에서 Base 변수를 import 한다는 문장 3. 데이터베이스의 테이블을 만들기 위한 Column과 Column type을 import 한다. from sqlalchemy import Boolean, Column, Integer, String 4. 데이터베이스에 만들 테이블을 클래스로 생성한다. class Todos(Base): # 테이블을 만들 때 Base를 상속받는다. __tablename_..
pydantic은 type annotation(직접 자료형을 지정한다는 뜻)을 사용해서 데이터를 검증하고 설정들을 관리한다. pydantic은 vaildation library가 아닌 parsing library이다. 유효성 검사는 제공된 유형 및 제약 조건을 준수하는 모델을 구축하는 목적을 달성하기 위한 수단이다. pydnatic은 입력 데이터가 아닌 출력모델의 유형과 제약 조건을 보장한다. 더 많은 제약 조건을 걸면 충분히 검증을 위해서도 사용할 수 있다.(ex. Field) 1. 데이터 유효성 클래스에서 새 객체를 생성할 때, pydantic은 결과 모델 인스턴스가 모델에 정의된 필드 유형을 준수하도록 보장한다. 클래스내에서 자료형을 지정하고, 자료형이 유효하지 않을 때 에러를 발생시킨다. 2. 파..