윈도우 환경에서 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_..
1. 인코딩 컴퓨터의 모든 데이터는 0과 1로 구성된다. "과일"이 과일을 가리키는 데 약속이 필요하듯, 0과 1로 우리의 문자를 표현하는 것도 일종의 약속이며 이런 약속들을 인코딩(Encoding) 표준, 대표적으로 아스키(Ascii)와 유니코드(Unicode)가 있다. ex) 1000001 -> 아스키로 변환 -> A 나라별 인코딩 표준에서 영어는 아스키, 한글은 CP-949, EUC-KR 등을 사용했었다. 하지만 가끔 호환되지 않는 문제가 발생해서 유니코드라는 새로운 표준이 만들어졌다고 한다. 유니코드 - 한 문자는 최대 32개의 비트로 표현 - 32비트로 표현할 수 있는 정보의 가짓수는 2^{32}232, 대략 42억개 - 최근에는 한글, 한자, 히라가나, 가타카나, 알파벳과 같은 문자 외에 각종..
pydantic은 type annotation(직접 자료형을 지정한다는 뜻)을 사용해서 데이터를 검증하고 설정들을 관리한다. pydantic은 vaildation library가 아닌 parsing library이다. 유효성 검사는 제공된 유형 및 제약 조건을 준수하는 모델을 구축하는 목적을 달성하기 위한 수단이다. pydnatic은 입력 데이터가 아닌 출력모델의 유형과 제약 조건을 보장한다. 더 많은 제약 조건을 걸면 충분히 검증을 위해서도 사용할 수 있다.(ex. Field) 1. 데이터 유효성 클래스에서 새 객체를 생성할 때, pydantic은 결과 모델 인스턴스가 모델에 정의된 필드 유형을 준수하도록 보장한다. 클래스내에서 자료형을 지정하고, 자료형이 유효하지 않을 때 에러를 발생시킨다. 2. 파..
Python의 ORM 라이브러리인 Sqlalchemy를 이용해서 데이터베이스와 연결해 보기 1. Sqlalchemy란? ORM(Object Relational Mapping)을 사용할 수 있게 도와주는 데이터베이스 관련 툴킷 파이썬을 기반으로 한 오픈소스 객체 지향적인 코드를 만들 수 있음 2. ORM 이란? 객체와 데이터베이스의 관계를 매핑 코드의 가독성도 높아지고 코드의 재사용&유지보수에 대한 편리성이 증가 파이썬 클래스를 관계형 데이터베이스의 테이블로 해석하고, 파이썬형태의 SQLAlchemy 표현언어를 SQL로 변환 1. Sqlalchemy 사용해 보기 라이브러리 설치 pip install sqlalchemy 작업 환경 세팅 todoapp 폴더 생성 폴더 하위에 database.py 생성 from..
데이터베이스가 무엇인지, 데이터가 무엇인지, SQL은 무엇인지 아는것이 목표 1. DataBase 란? 컴퓨터에 저장된 데이터의 구조화된 정보 또는 조직화 된 모음 = 데이터의 집합, 저장소 DBMS(데이터베이스 관리 시스템)에 의해 제어 되며 데이터와 DBMS를 하나로 묶어 데이터베이스라고 한다. 2. DataBase 특징 데이터에 쉽게 접근 할 수 있고 데이터를 검색, 삽입, 수정, 삭제 할 수 있다. 다수의 사용자가 동시에 데이터를 컨트롤하고 조직화 할 수 있다. 3. DBMS 란? 데이터베이스를 운영하고 관리하는 소프트웨어 동시 접속 및 데이터 공유가 가능하다. Relational DBMS를 많이 쓴다 ※ DBMS 대표적인 종류 명칭 개발사 작동 운영체제 추가 사항 MySQL Oracle Unix..
Pydantic, BaseModel, Data Validation, CRUD, UUID 1. Pydantic FastAPI 내에서 Data Validation(데이터 유효성)을 검사하고 관리하는 라이브러리 클래스 모델에 속해있는 값들에 적합한 자료형을 코드에 선언하고 자료형을 검증하는 것을 도와준다. 선언한 자료형과 일치하는 않는 자료형을 가진 값이 대입되는 경우, Data Validation(데이터 유효성) 오류가 발생한다. Python에서 기본적으로 제공하는 json 모듈의 loads를 이용해 JSON 모델로 반환하는데 이것을 서포터 해준다. 즉, 선언한 자료형의 값들에 벗어나는 경우에 대해 검사를 한다. 우선, 정의를 하기 위해서는 BaseModel을 상속을 받아서 구현해야 한다. from pyda..
인증해서 읽고 싶은 책 가져오는 것이 목표(연습하기) 1. async def book_login API 생성 2. username / password는 헤더를 사용해서 query parameter로 받는다.(username: FastAPIUser, password: test1234!) 3. username / password가 맞지 않는 경우 "Invalid User"을 반환한다. 1. 전체 코드 from typing import Optional from fastapi import FastAPI, Header from pydantic import BaseModel, Field from uuid import UUID app = FastAPI() @app.post("/books/login") async de..
Headers로 GET 요청 할 때 추가 정보를 보내기 1. import Header from fastapi import FastAPI, Header 2. 함수 생성 @app.get("/header") async def read_header(random_header: Optional[str] = Header(None)): return {"Random-Header": random_header} read_header 함수에 Header를 붙히지 않는다면 선택적 쿼리 매개변수가 된다. Header의 옵션 1. 하이픈(-)을 자동으로 언더바(_)로 변환시킨다. 이런 옵션을 사용하고 싶지 않는다면?(convert_underscores=False 추가) @app.get("/header") async def read..