FastAPI로 Postman CRUD

2023. 1. 11. 23:54·Develop/FastAPI
728x90
SMALL
Postman을 통해서 CRUD 해보기
https://web.postman.com

 

1. 전체 코드

 

database.py

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"

engine = create_engine(
	SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)

SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

models.py

from sqlalchemy import Boolean, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Test(Base):
    __tablename__ = "test1"  # 테이블 이름 정의

    # 테이블의 열을 정의
    id = Column(Integer, primary_key=True, index=True)
    title = Column(String)
    description = Column(String)
    confirm = Column(Boolean, default=True)

main.py

from fastapi import FastAPI, Depends, HTTPException
import models
from database import engine, SessionLocal
from sqlalchemy.orm import Session
from pydantic import BaseModel

app = FastAPI()
models.Base.metadata.create_all(bind=engine)

def get_db():
    try:
        db = SessionLocal()
        yield db
    finally:
        db.close()

class TestConfirm(BaseModel):
    title: str
    description: str
    confirm: bool

@app.get("/")
async def read_all(db: Session = Depends(get_db)):
    return db.query(models.Test).all()

@app.get("/{test_id}")
async def read_test1(test_id: int, db: Session = Depends(get_db)):
    test_model = db.query(models.Test).filter(models.Test.id == test_id).first()
    if test_model is not None:
        return test_model
    raise http_exception()

@app.post("/")
async def create_test1(test: TestConfirm, db: Session = Depends(get_db)):

    test_model = models.Test()
    test_model.title = test.title
    test_model.description = test.description
    test_model.confirm = test.confirm

    db.add(test_model)
    db.flush()
    db.commit()
    return successful_response(200)

@app.put("/{test_id}")
async def update_test1(test_id: int, test: TestConfirm, db: Session = Depends(get_db)):

    test_model = db.query(models.Test).filter(models.Test.id == test_id).first()

    if test_model is None:
        raise http_exception()

    test_model.title = test.title
    test_model.description = test.description
    test_model.confirm = test.confirm

    db.add(test_model)
    db.flush()
    db.commit()
    return successful_response(200)

@app.delete("/{test_id}")
async def delete_test1(test_id: int, db: Session = Depends(get_db)):

    test_model = db.query(models.Test).filter(models.Test.id == test_id).first()

    if test_model is None:
        raise http_exception()

    db.query(models.Test).filter(models.Test.id == test_id).delete()
    db.flush()
    db.commit()
    return successful_response(200)


def successful_response(status_code:int):
    return {
        'status': status_code,
        'transaction': 'Successful'
    }

def http_exception():
    return HTTPException(status_code=404, detail="Test not found")

 

2. 데이터 만들기(POST 요청)

 

3. 데이터 전체 조회하기(GET 요청)

테이블의 전체 데이터가 조회된다.

 

4. 특정 데이터 조회하기(GET 요청)

지정한 id의 값으로 데이터를 조회한다.

왼쪽: id가 1인 데이터 / 오른쪽: id가 2인 데이터

 

5. 데이터 업데이트하기(PUT 요청)

id가 2번인 데이터가 업데이트 된다.

컬럼 타입이나 하나의 컬럼을 제외 했을 경우

 

6. 데이터 삭제하기(DELETE 요청)

id가 1번인 데이터가 삭제 된다.

 

728x90
SMALL
저작자표시 비영리 변경금지

'Develop > FastAPI' 카테고리의 다른 글

FastAPI PostgreSQL Connect to FastAPI - 59  (0) 2023.01.15
FastAPI PostgreSQL Create Database Table - 58  (0) 2023.01.15
FastAPI Postman을 통한 DELETE요청(사용자 ID + 할 일 ID) - 57  (0) 2023.01.11
FastAPI Postman을 통한 PUT요청(사용자 ID + 할 일 ID) - 56  (0) 2023.01.11
FastAPI Postman을 통한 POST요청(사용자 ID) - 55  (1) 2023.01.10
'Develop/FastAPI' 카테고리의 다른 글
  • FastAPI PostgreSQL Connect to FastAPI - 59
  • FastAPI PostgreSQL Create Database Table - 58
  • FastAPI Postman을 통한 DELETE요청(사용자 ID + 할 일 ID) - 57
  • FastAPI Postman을 통한 PUT요청(사용자 ID + 할 일 ID) - 56
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
FastAPI로 Postman CRUD
상단으로

티스토리툴바