[파이썬] ORM을 사용한 데이터베이스 코드 생성

ORM

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을 활용하여 데이터베이스 코드를 생성해보세요!