[파이썬] ORM(Object-Relational Mapping)의 개념

ORM, 또는 객체-관계 매핑은 개발자가 관계형 데이터베이스와 객체 지향 프로그래밍 간의 간극을 해결하기 위한 도구입니다. ORM은 데이터베이스의 테이블과 관련된 데이터를 객체로 변환하고, 객체 간의 관계를 유지하며 데이터를 관리하는 방식을 제공합니다. 이를 통해 개발자는 SQL 쿼리를 직접 작성하는 대신 객체를 사용하여 데이터베이스와 상호 작용할 수 있습니다.

ORM은 여러 가지 프로그래밍 언어와 프레임워크에서 지원되지만, 이번 글에서는 Python에서 가장 많이 사용되는 ORM인 SQLAlchemy를 중심으로 설명하겠습니다.

SQLAlchemy 소개

SQLAlchemy는 Python에서 사용하는 대표적인 ORM 라이브러리로, 관계형 데이터베이스와의 상호 작용을 쉽게 처리할 수 있도록 도와줍니다. SQLAlchemy는 세 가지 주요 구성 요소로 구성되어 있습니다.

  1. SQLAlchemy Core: SQL 쿼리를 작성하고 실행하는 기본적인 기능을 제공합니다. 개발자는 직접 SQL문을 작성하여 데이터베이스와 상호 작용할 수 있습니다.

  2. SQLAlchemy ORM: 객체-관계 매핑을 위한 ORM 기능을 제공합니다. 개발자는 데이터베이스의 테이블을 클래스로 나타내고, 이를 통해 데이터를 생성, 조회, 수정, 삭제할 수 있습니다.

  3. SQLAlchemy Engine: 데이터베이스 연결 및 트랜잭션 관리를 담당하는 엔진입니다. SQLAlchemy Core와 SQLAlchemy ORM에서 사용되며, 다양한 데이터베이스 시스템과 호환됩니다.

SQLAlchemy ORM 사용하기

SQLAlchemy ORM을 사용하여 데이터베이스와 상호 작용하기 위해서는 몇 가지 단계를 따라야 합니다. 우선, SQLAlchemy에서 제공하는 기능을 사용할 수 있도록 패키지를 설치해야 합니다. 다음은 Python 패키지 관리자인 pip를 사용하여 SQLAlchemy를 설치하는 명령어입니다.

pip install sqlalchemy

설치가 완료되면, SQLAlchemy를 import하여 사용할 수 있습니다.

import sqlalchemy

SQLAlchemy에서는 세 가지 주요 개념인 Table, Column, 그리고 Mapper를 사용하여 데이터베이스 구조를 정의합니다. Table은 데이터베이스의 테이블을 나타내고, Column은 테이블 내의 열을 정의합니다. Mapper는 테이블과 객체 간의 매핑을 처리합니다.

아래는 간단한 예제 코드입니다. 여기서는 users라는 테이블을 정의하고, 해당 테이블과 관련된 사용자 객체를 만들어 데이터베이스에 추가하는 방법을 보여줍니다.

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# 데이터베이스에 연결하기 위한 엔진 생성
engine = create_engine('sqlite:///users.db', echo=True)

# 세션 생성을 위한 팩토리 생성
Session = sessionmaker(bind=engine)

# Base 클래스 생성
Base = declarative_base()

# 사용자 객체 정의
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String)
    password = Column(String)

# 테이블 생성
Base.metadata.create_all(engine)

# 세션 시작
session = Session()

# 사용자 생성 및 추가
user = User(username='john.doe', password='password')
session.add(user)
session.commit()

위의 코드를 실행하면, 이름이 ‘users.db’인 SQLite 데이터베이스 파일이 생성되고, ‘users’라는 테이블이 자동으로 생성됩니다. 또한, ‘users’ 테이블에 새로운 사용자가 추가됩니다.

이렇게 생성된 사용자 객체는 ORM을 통해 데이터베이스에 쉽게 저장, 조회, 수정, 삭제할 수 있습니다. SQLAlchemy는 SQL 쿼리를 대신하여 파이썬 객체를 사용하여 데이터베이스와 상호 작용하는 것을 가능하게 해줍니다.

마무리

ORM은 개발자에게 데이터베이스와 객체 지향 프로그래밍 사이의 간극을 줄여주는 강력한 도구입니다. SQLAlchemy를 포함한 다양한 ORM 라이브러리들은 개발 생산성을 향상시키고, 코드의 가독성 및 유지 보수성을 향상시키는데 도움을 줍니다. 프로젝트에 적합한 ORM을 선택하고 활용하여 데이터베이스 작업을 효율적으로 처리할 수 있도록 노력해보세요.