fastAPI 세션3(ORM)
2025. 7. 26. 18:26ㆍ일기
ORM(Object Relational Mapping)은 파이썬 객체와 관계형 데이터베이스의 테이블을 매핑해주는 기술로, SQL을 직접 작성하지 않고도 파이썬 코드로 데이터를 조회, 추가, 수정, 삭제할 수 있게 해준다.
SQLAlchemy에서는 Session을 통해 데이터베이스와의 연결 및 트랜잭션을 관리한다.
데이터를 생성하거나 수정할 때는 아래와 같이 사용한다:
session.add(todo) # 새 객체를 세션에 추가
session.commit() # 변경 내용을 DB에 반영
session.refresh(todo) # DB에서 다시 읽어 반영된 값을 객체에 채움
return todo
삭제할 때는 SQLAlchemy의 delete() 함수를 사용하여 쿼리를 생성하고 실행한다:
def delete_todo(session: Session, todo_id: int) -> None:
session.execute(delete(ToDo).where(ToDo.id == todo_id))
session.commit()
__repr__ 메서드는 객체의 문자열 표현을 정의하는 것으로, 디버깅이나 로깅 시 객체의 상태를 명확하게 출력하는 데 유용하다.
@classmethod는 객체를 입력으로 받아 새로운 인스턴스를 생성하거나, 대체 생성자로 사용할 수 있다.
declarative_base()는 SQLAlchemy에서 ORM 매핑을 위한 기반 클래스(Base)를 정의하는 함수로, 이후 정의되는 모든 모델 클래스는 이를 상속받는다.
create_engine()은 실제 데이터베이스와의 연결 정보를 설정하며, 해당 엔진을 기반으로 세션을 만들어 SQL 쿼리를 실행할 수 있다.
후기
따라 적은 코드를 보며 대충 기억나는대로 적고 gpt에 적은 후 피드백을 받아 옮겨 적었지만 잘 모르겠다.
계속 보면 이해가 될거라 믿는다
반응형
'일기' 카테고리의 다른 글
docker (5) | 2025.07.29 |
---|---|
인프런 강의 fastAPI 섹션 2 정리 (1) | 2025.07.26 |