[파이썬] Django ORM을 이용한 데이터베이스 조작

Django는 파이썬 웹 프레임워크로서, 데이터베이스 조작을 간단하게 할 수 있는 ORM(Object-Relational Mapping) 기능을 제공합니다. ORM은 객체와 관계형 데이터베이스 간의 매핑을 자동으로 처리해주는 도구로, SQL 쿼리문을 직접 작성하는 번거로움을 줄여줍니다. 이번 블로그 포스트에서는 Django ORM을 이용하여 데이터베이스를 조작하는 방법에 대해 알아보겠습니다.

데이터베이스 설정

Django에서 데이터베이스 작업을 하기 위해서는 먼저 데이터베이스 설정을 해야 합니다. settings.py 파일에서 데이터베이스 엔진, 이름, 사용자 이름, 비밀번호 등의 정보를 설정할 수 있습니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

위의 예시에서는 PostgreSQL 데이터베이스를 사용하고 있으며, 데이터베이스 이름은 mydatabase, 사용자 이름은 myuser, 비밀번호는 mypassword로 설정하였습니다. 호스트와 포트는 각각 localhost5432로 설정되어 있습니다.

모델 정의

Django ORM을 사용하여 데이터베이스를 조작하기 위해서는 먼저 모델을 정의해야 합니다. 모델은 데이터베이스 테이블과 관련된 정보를 담고 있는 파이썬 클래스입니다. 각 클래스는 모델 필드로 데이터베이스 테이블의 열(column)을 정의합니다.

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    publication_date = models.DateField()

위의 예시에서는 Book 클래스를 정의하고 있습니다. Book 모델은 title, author, publication_date 세 개의 필드로 구성되어 있습니다. CharField는 문자열 필드를 나타내며, DateField는 날짜 필드를 나타냅니다.

데이터베이스 쿼리

모델을 정의한 후에는 Django ORM을 이용하여 데이터베이스에 쿼리를 날릴 수 있습니다.

데이터 추가

book = Book(title='Django for Beginners',
            author='William S. Vincent',
            publication_date='2020-01-01')
book.save()

위의 예시에서는 Book 모델의 인스턴스를 생성하고, save() 메서드를 호출하여 데이터베이스에 추가합니다.

데이터 조회

books = Book.objects.all()
for book in books:
    print(book.title)

위의 예시에서는 Book 모델의 모든 레코드를 조회하여 각각의 title 필드를 출력합니다.

데이터 필터링

books = Book.objects.filter(author='William S. Vincent')
for book in books:
    print(book.title)

위의 예시에서는 author 필드가 ‘William S. Vincent’인 레코드만 조회하여 title 필드를 출력합니다.

데이터 업데이트

book = Book.objects.get(pk=1)
book.title = 'Django for Experts'
book.save()

위의 예시에서는 주어진 조건에 해당하는 레코드를 get()으로 가져와서 title 필드를 업데이트하고 저장합니다.

데이터 삭제

book = Book.objects.get(pk=1)
book.delete()

위의 예시에서는 주어진 조건에 해당하는 레코드를 get()으로 가져와서 삭제합니다.

마치며

이번 블로그 포스트에서는 Django ORM을 이용하여 데이터베이스를 조작하는 방법에 대해 알아보았습니다. Django ORM은 객체와 관계형 데이터베이스 간의 매핑을 자동으로 처리해주므로, SQL 쿼리문을 작성하는 번거로움을 줄여줍니다. Django를 사용하면 웹 애플리케이션 개발 과정에서 데이터베이스 조작을 편리하게 할 수 있으니, 앞으로도 많이 활용해보시기 바랍니다.