[파이썬] ORM을 사용한 데이터베이스 모델 관리

ORM (Object-Relational Mapping)은 데이터베이스와 상호작용하는 애플리케이션의 개발을 간편하게 해주는 도구입니다. ORM은 데이터베이스의 테이블과 매핑되는 객체를 사용하고, 객체 지향 프로그래밍 언어에서 사용되는 방식으로 데이터베이스에 접근할 수 있게 해줍니다.

파이썬에서는 SQLAlchemy라는 ORM 라이브러리를 흔히 사용합니다. SQLAlchemy를 사용하여 데이터베이스 모델을 관리하는 방법에 대해 알아보겠습니다.

SQLAlchemy 설치

먼저 SQLAlchemy를 설치해야 합니다. 파이썬의 패키지 관리자인 pip를 사용하여 설치할 수 있습니다. 다음 명령을 실행하여 SQLAlchemy를 설치합니다.

pip install sqlalchemy

모델 정의하기

SQLAlchemy에서는 데이터베이스 테이블과 매핑되는 클래스를 모델로 정의합니다. 다음은 사용자 정보를 담는 User 모델의 예입니다.

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    username = Column(String)
    email = Column(String)

위 코드에서 Base 클래스는 모든 모델의 부모 클래스로 사용됩니다. User 클래스는 Base 클래스를 상속받고, __tablename__ 속성을 통해 테이블 이름을 지정해줍니다. 그리고 각 필드를 Column 객체로 정의하고 해당 필드의 타입을 지정합니다.

데이터베이스에 연결하기

다음으로는 데이터베이스에 연결하여 사용자 모델을 데이터베이스에 반영하는 작업을 수행해야 합니다. SQLAlchemy는 다양한 데이터베이스를 지원하므로, 사용하고자 하는 데이터베이스에 맞는 드라이버를 설치해야 합니다.

from sqlalchemy import create_engine

engine = create_engine('sqlite:///database.db', echo=True)
Base.metadata.create_all(engine)

위 코드에서는 SQLite 데이터베이스를 사용하는 예제입니다. create_engine 함수를 통해 데이터베이스에 연결을 생성하고, create_all 메소드를 통해 모델을 실제 테이블로 만듭니다.

CRUD 작업 수행하기

ORM을 사용하면 쉽게 데이터베이스에 대한 다양한 작업을 수행할 수 있습니다. 다음은 SQLAlchemy를 사용하여 CRUD (Create, Read, Update, Delete) 작업을 수행하는 예제입니다.

Create

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
session = Session()

user = User(username='john', email='john@example.com')
session.add(user)
session.commit()

Read

users = session.query(User).all()
for user in users:
    print(user.username, user.email)

Update

user = session.query(User).filter_by(username='john').first()
user.email = 'new_email@example.com'
session.commit()

Delete

user = session.query(User).filter_by(username='john').first()
session.delete(user)
session.commit()

위 예제에서는 sessionmaker를 통해 세션을 생성하고, 원하는 작업을 위해 해당 세션을 사용합니다. query 메소드를 통해 원하는 데이터를 조회하고, add, commit, delete 메소드를 사용하여 데이터베이스 작업을 수행합니다.

ORM을 사용하면 데이터베이스 관련 작업을 보다 쉽고 간편하게 수행할 수 있습니다. SQLAlchemy는 강력하고 유연한 ORM 라이브러리로서, 파이썬 개발자들에게 많은 도움을 주고 있습니다.