Object-Relational Mapping (ORM)은 데이터베이스와의 상호 작용을 추상화하는 기술입니다. 이를 통해 개발자는 SQL 질의를 직접 작성하지 않고도 객체 지향 코드를 사용하여 데이터베이스와 상호 작용할 수 있습니다. Python에서 가장 많이 사용되는 ORM 프레임워크 중 하나는 Django ORM입니다. Django ORM을 사용하면 Python 코드로 데이터베이스 스키마를 정의하고, 테이블을 생성하고, 데이터를 쿼리하고, 조작할 수 있습니다.
1. 모델 정의하기
데이터베이스와 상호 작용하기 위해서는 먼저 모델을 정의해야 합니다. 모델은 데이터베이스 테이블의 스키마와 대응됩니다. Django ORM에서는 django.db.models.Model
클래스를 상속받아 모델을 정의합니다.
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey('Author', on_delete=models.CASCADE)
publication_date = models.DateField()
위의 코드에서는 Book
모델을 정의하였습니다. title
필드는 최대 100자의 문자열로, author
필드는 Author
모델과의 관계를 나타내는 외래 키입니다. publication_date
필드는 날짜 형식의 값을 가집니다.
2. 마이그레이션 생성하기
모델을 정의한 후에는 데이터베이스에 실제 테이블을 생성해야 합니다. Django ORM은 마이그레이션(Migration) 기능을 제공하여 데이터베이스 스키마의 변경을 추적하고 적용할 수 있습니다. 마이그레이션은 데이터베이스에 영향을 주는 변경 사항을 기록한 파일입니다.
모델에 추가, 수정 또는 삭제가 있을 경우, 다음 명령을 실행하여 마이그레이션을 생성할 수 있습니다.
$ python manage.py makemigrations
위의 명령을 실행하면 Django ORM은 데이터베이스 스키마의 변경 사항에 대한 마이그레이션 파일을 생성합니다.
3. 마이그레이션 적용하기
마이그레이션 파일이 생성되면 다음 명령을 실행하여 실제 데이터베이스에 마이그레이션을 적용할 수 있습니다.
$ python manage.py migrate
위의 명령을 실행하면 Django ORM은 마이그레이션 파일을 순차적으로 실행하여 데이터베이스의 스키마를 업데이트합니다.
4. 데이터 쿼리하기
마이그레이션을 통해 데이터베이스 테이블이 생성되었다면, 데이터를 조회하거나 조작할 수 있습니다. Django ORM을 사용하면 간단한 인터페이스를 통해 데이터 쿼리를 수행할 수 있습니다.
from myapp.models import Book
# 모든 책 조회
books = Book.objects.all()
# 특정 조건에 맞는 책 조회
books = Book.objects.filter(author__name='John Doe')
# 정렬하여 책 조회
books = Book.objects.order_by('publication_date')
# 책 생성
book = Book(title='The Great Gatsby', author='F. Scott Fitzgerald', publication_date='1925-04-10')
book.save()
# 책 수정
book.title = 'The Catcher in the Rye'
book.save()
# 책 삭제
book.delete()
위의 코드에서는 Book
모델을 사용하여 데이터를 쿼리하고, 수정하고, 삭제하는 방법을 보여줍니다.
Django ORM은 강력하고 유연한 데이터베이스 관련 기능을 제공하며, 개발자가 SQL 질의를 작성하지 않고도 데이터베이스와 상호 작용할 수 있습니다. ORM을 사용하면 개발 생산성을 높일 수 있고, 유지 보수가 용이해집니다. Python의 Django ORM을 활용하여 데이터베이스 코드를 생성해보세요!