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 라이브러리로서, 파이썬 개발자들에게 많은 도움을 주고 있습니다.