[python] Peewee와 다른 ORM의 비교

ORM(Object-Relational Mapping)은 개발자가 객체 지향 프로그래밍 언어를 사용하여 데이터베이스를 관리할 수 있게 해주는 도구입니다. Python에서는 여러 가지 ORM 라이브러리가 제공되고 있으며, 그 중 Peewee를 비롯한 다른 ORM들을 비교해보도록 하겠습니다.

1. Peewee

Peewee는 Python에서 사용하기 쉬운 ORM 라이브러리로, 경량화되어있고 성능이 우수합니다. SQL 쿼리 작성을 위해 자체 DSL(Domain Specific Language)을 제공하며, 다양한 데이터베이스와 호환됩니다.

Peewee 예제 코드:

from peewee import *

# 데이터베이스 연결
db = SqliteDatabase('my_database.db')

# 모델 정의
class User(Model):
    username = CharField()
    email = CharField()

    class Meta:
        database = db

# 테이블 생성
db.create_tables([User])

# 데이터 추가
User.create(username='John', email='john@example.com')

# 데이터 조회
users = User.select()
for user in users:
    print(user.username, user.email)

# 데이터 수정
user = User.get(User.username == 'John')
user.email = 'new_email@example.com'
user.save()

# 데이터 삭제
user = User.get(User.username == 'John')
user.delete_instance()

2. SQLAlchemy

SQLAlchemy는 Python에서 가장 인기 있는 ORM 라이브러리 중 하나입니다. Peewee와 비교했을 때 좀 더 복잡한 기능을 제공하며, 대규모 프로젝트나 복잡한 데이터베이스 작업에 적합합니다.

SQLAlchemy 예제 코드:

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

# 데이터베이스 연결
engine = create_engine('sqlite:///my_database.db')
Session = sessionmaker(bind=engine)
session = Session()

# 모델 정의
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    username = Column(String, primary_key=True)
    email = Column(String)

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

# 데이터 추가
user = User(username='John', email='john@example.com')
session.add(user)
session.commit()

# 데이터 조회
users = session.query(User).all()
for user in users:
    print(user.username, user.email)

# 데이터 수정
user = session.query(User).filter_by(username='John').first()
user.email = 'new_email@example.com'
session.commit()

# 데이터 삭제
user = session.query(User).filter_by(username='John').first()
session.delete(user)
session.commit()

3. Django ORM

Django ORM은 Python 웹 프레임워크인 Django의 일부로 제공되며, 강력한 ORM 기능을 가지고 있습니다. Django ORM은 장고 프로젝트에서 기본적으로 사용되며, 편리한 쿼리 작성 및 데이터베이스 관리 도구를 제공합니다.

Django ORM 예제 코드:

from django.db import models

# 모델 정의
class User(models.Model):
    username = models.CharField(max_length=100)
    email = models.EmailField()

# 데이터 추가
user = User(username='John', email='john@example.com')
user.save()

# 데이터 조회
users = User.objects.all()
for user in users:
    print(user.username, user.email)

# 데이터 수정
user = User.objects.get(username='John')
user.email = 'new_email@example.com'
user.save()

# 데이터 삭제
user = User.objects.get(username='John')
user.delete()

결론

Peewee, SQLAlchemy, Django ORM은 모두 Python에서 사용할 수 있는 강력한 ORM 라이브러리입니다. 개발자는 프로젝트의 규모와 요구 사항에 맞게 적합한 ORM을 선택하여 데이터베이스 작업을 수행할 수 있습니다.