FastAPI 28

파이참 - Refactoring

메서드 이동 Refactor현재 프로젝트 구조를 보면 schema 밑에 request.py라는 파이썬 파일이 존재하고 그 파일 안에 CreateToDoRequest라는 메소드가 존재한다. 이 메소드를 만약 main.py의 파일로 옮기고 싶다면?파이참에는 편하게 파일을 옮겨주는 Refactor 기능이 있다.사진을 보면 메서드를 더블클릭후 오른쪽 마우스를 누르면 Refactor -> Move를 눌러준다.그리고 이렇게 원하는 파일의 경로를 입력해주고 Refactor 버튼을 눌러주게 되면사진처럼 main.py 파일에 해당 메서드가 잘 옮겨진다.import도 알아서 자동으로 옮겨진다.이름 변경 Refactorfrom typing import Listfrom pydantic import BaseModel# Base..

ORM 적용 - HTTP Response 처리

# response.pyfrom typing import Listfrom pydantic import BaseModel# BaseModel을 상속받는 스키마 클래스class ToDoSchema(BaseModel): id: int contents : str is_done: bool # SQL alchemy를 읽어줄 수 있도록 하기 위한 옵션 # Pydantic에 정의한 ORM 모드라는 걸 사용 가능 # 따라서 ToDoSchema에 SQL alchemy ORM 객체를 주면 Pydantic이 이 ORM 객체를 해석해서 맞게 변경을 해준다. class Config: from_attributes = True# 실제로 response에 활용을 할 클래스class L..

ORM 적용 - GET 전체 조회 API / Python - Generator

# connection.pydef get_db(): # 세션 팩토리를 이용해서 세션 객체를 만들어준다. session = SessionFactory() try: yield session finally: session.close()generator를 만들어준다.FastAPI를 사용해서 데이버베이스에 접근할 수 있게 해준다.request가 들어왔을 때 session이 생성이 돼서 yield 문으로 return이 된 후에 사용이 되다가 response 한 이후에 session을 close() 해서 삭제하는 식으로 FastAPI가 session을 관리해주게 된다.# repository.pyfrom typing import Listfrom sqlalchemy import ..

데이터베이스 연결

라이브러리 다운로드pip install sqlalchemypip install pymysql python과 mysql을 연동할 때 사용되는 드라이버pip install cryptographypyMySQL을 통해 MySQL에 접속할 때 인증이나 암호 관련된 처리를 해주는 라이브러리데이터베이스 연결# 라이브러리 importfrom sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmaker# root 계정의 todos라는 비밀번호를 이용한다. 포트는 이렇게 사용하고 todos 데이터베이스를 사용한다. 라는 의미DATABASE_URL = "mysql+pymysql://root:todos@127.0.0.1:3306/todos"# 어느 SQL Al..

DDL - Create Table

docker 컨테이너 접속docker exec -it todos bash그럼 bash에 접속하게 된다. 그 후 밑의 명령어를 입력bash-5.1# mysql -u root -proot 유저를 이용해서 mysql에 접속을 하게 된다.-p : 패스워드를 따로 입력하겠다. 라는 명령어뒤에 Enter password: 라고 나타는데 여기에 비밀번호를 입력데이터베이스 확인show databases;마지막에 있는 todos는 이전 글에서 환경변수로 컨테이너가 동작을 할 때 생성을 요청했던 데이터베이스라서 기본적으로 todos가 생성이 됐다.그 외에 있는 4개의 데이터베이스는 MySQL이 어떤 시스템 관리를 위해서 기본적으로 생성하는 데이터베이스데이터베이스 사용하기mysql> use todos;테이블 생성mysql>..

MySQL 컨테이너 실행

Docker 설치 확인docker -v============================================================아래처럼 Docker 버전이 출력돼야된다.Docker version 29.4.2, build 055a478Docker 컨테이너를 동작docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=todos -e MYSQL_DATABASE=todos -d -v todos:/db --name todos mysql:8.0-p 3306:3306 : 포트를 매핑해주는 명령어MySQL은 기본적으로 3306번 포트를 사용한다.-p 3306:3306 : 로컬 디바이스의 3306 포트와 도커 컨테이너 안에 3306번 포트와 연결을 시켜준다.따라서 3306번..

sqlalchemy

관계형 데이터베이스를 사용하기 위한 High-level 인터페이스를 제공하는 Python 라이브러리sqlalchemy를 사용하면 ORM, Query, Transaction, Connection Pooling 같은 기능을 사용할 수 있다.ORM(Object-Relational Mapping)관계형 데이터베이스를 객체 지향 프로그래밍(OOP)에 대응하여 사용하는 프로그래밍 기술하나의 테이블 = 하나의 클래스하나의 행(레코드) = 하나의 객체id = 1username = abcuser = User(id = 1, username = 'abc')