약 6분
읽기 설정
글자 크기
줄 간격
글꼴
7.1 SQLite와 MySQL 소개
이번 장에서는 SQLite와 MySQL의 기본 개념을 소개하고, Python을 사용하여 FastAPI와 함께 이 두 데이터베이스를 연결하는 방법을 배워보겠습니다. SQLite는 경량 데이터베이스로 작은 프로젝트나 임시 데이터 저장에 적합하며, MySQL은 보다 복잡하고 대규모 애플리케이션에 사용되는 관계형 데이터베이스입니다. 이 두 데이터베이스의 차이점과 장단점을 이해하는 것은 프로젝트에 적합한 데이터베이스를 선택하는 데 도움을 줍니다.
실습 프로젝트: 기본 CRUD API 구축하기
우리는 FastAPI를 사용하여 간단한 CRUD(Create, Read, Update, Delete) API를 구축할 것입니다. 이 API는 SQLite 데이터베이스를 사용하여 데이터 저장을 처리할 것입니다. 이후 MySQL을 사용하는 방법도 소개할 예정입니다.
-
FastAPI 설치: FastAPI와 관련된 라이브러리를 설치합니다.
pip install fastapi[all] sqlalchemy sqlite -
SQLite 데이터베이스 설정: 아래의 코드를 사용하여 SQLite 데이터베이스를 초기화하고 연결합니다.
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker DATABASE_URL = "sqlite:///./test.db" engine = create_engine(DATABASE_URL) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() -
모델 생성: 데이터베이스 모델을 정의합니다.
class Item(Base): __tablename__ = "items" id = Column(Integer, primary_key=True, index=True) name = Column(String, index=True) description = Column(String) -
FastAPI CRUD 엔드포인트 작성: 다음으로 FastAPI를 사용하여 CRUD 기능을 제공하는 API 엔드포인트를 만듭니다.
from fastapi import FastAPI, Depends from sqlalchemy.orm import Session app = FastAPI() @app.post("/items/") def create_item(item: Item, db: Session = Depends(get_db)): db.add(item) db.commit() db.refresh(item) return item위의 코드는 새로운 아이템을 생성하는 API 엔드포인트를 설정합니다. 필요한 경우 나머지 CRUD 엔드포인트도 비슷한 방식으로 구현할 수 있습니다.
-
MySQL로의 변경: SQLite에서 MySQL로 전환하려면 데이터베이스 URL을 변경하고 MySQL 클라이언트 라이브러리를 설치합니다.
pip install mysql-connector-pythonMySQL 데이터베이스에 접속하기 위해 데이터베이스 URL을 다음과 같이 변경합니다:
DATABASE_URL = "mysql+mysqlconnector://user:password@localhost/dbname"이렇게 하면 동일한 코드 구조를 유지하면서 SQLite와 MySQL을 사용하는 API 구현이 가능합니다.
요약
이 장에서는 SQLite와 MySQL의 개념을 간단히 소개하고, FastAPI를 통해 CRUD API를 구현하는 방법을 배웠습니다. 실습을 통해 데이터베이스의 연동 방법을 체험할 수 있었기를 바랍니다.
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.