DB commit

김민찬·2025년 2월 24일

Hanmbook-stocks

목록 보기
7/7

트랜젝션

데이터베이스에서 하나의 작업 단위, 여러 개의 작업이 하나로 묶여 모두 성공하거나, 모두 실패해야 하는 원칙을 가짐.

commit

  • 트랜젝션을 데이터베이스에 확정하는 작업.

rollback

  • COMMIT 하기 전에 실행한 변경 사항을 취소하는 명령어.

refresh

  • 특정 객체의 데이터를 DB와 동기화하는 기능.

예시코드

def signup(
        self, db: Session, login_id: str, pwd: str, name: str, email: str
    ) -> User | None:
        try:
            hashed_pwd = self.get_hashed_pwd(pwd)

            user = User(
                login_id=login_id,
                pwd=hashed_pwd,
                name=name,
                balance=BALANCE,
                email=email,
            )
            db.add(user) # db에 변동사항 추가
            db.commit() # mysql에 변경사항 적용
            db.refresh(user) # 변경된 user를 return 해주기 위해서, user 새로고침
            return user

        except Exception as e:
            print(e)
        return None

    else:
        new_stock = MyStocks(
            login_id=user.login_id,
            stock_code=req.stock_code,
            quantity=req.quantity,
            access_token=user.access_token,
            avg_price=req.stock_price / req.quantity,
        )
        db.add(new_stock)
    db.commit()

    return {"msg": "구매 완료"}
  • 이 코드에서는 return 을 할때 최신의 db 값을 가져올 필요가 없으니깐
    db.refresh가 없음
profile
동까스

0개의 댓글