[django] 데이터베이스(databases) 사용 방법.

웹앱을 만들기 위해서는 다양한 기능을 구현해야 합니다. 사용자에게 기본적인 조작이 가능한 페이지를 제공하고, 해당되는 액션에 따라 결과를 출력해주게 됩니다. 때로는 저장되어 있는 데이터를 가지고 와야하는 경우도 있습니다. 예를 들어, 게시판 기능이 있습니다. 게시판에는 다양한 글을 등록하고, 댓글이 달릴 수 있습니다. 해당 내용에 대한 정보는 데이터베이스에서 불러오게 되며, 이런 정보를 이용해 사용자에게 게시판의 여러 정보를 제공하게 됩니다.

장고에는 개발할 때 활용할 수 있는 기본적인 데이터베이스가 존재합니다. SQLite를 이용할 수 있습니다. 빠르게 개발하고, 테스트를 진행하는데 무리 없이 사용할 수 있다는 장점이 있습니다. 하지만, SQLite를 데이터베이스로 서비스를 개발하여 배포하는 것은 어렵습니다. 장고 공식 문서에서도 이 부분을 언급하고 있습니다. 외부의 PostgreSQL과 같은 확장성이 좋은 데이터베이스를 사용할 것을 권장하고 있습니다. 우선 사용법을 알아야겠죠.

장고(django) 데이터베이스(databases) 사용 방법 및 설정하기


ⓐ 장고 기본 데이터베이스 설정 위치

  • root 폴더 > settings.py > DATABASES 설정

장고 프로젝트를 생성하면 root 폴더가 생성됩니다. 해당 폴더에 포함되어 있는 settings.py 파일을 열어봅니다. 기본적인 장고 프로젝트에 대한 여러 설정 내용이 포함되어 있습니다. 여기서 스크롤을 내려 DATABASES 부분을 찾습니다. 사진을 참고하면 도움이 될 수 있습니다.

기본적으로 SQLite3를 데이터베이스로 설정되어 있는 모습을 볼 수 있습니다. settings.py 파일을 편집할 때는 TIME_ZONE 값을 사용자의 시간대에 맞춰 설정하라고 전합니다.

처음 개발 서버(python manage.py runserver)를 실행하면 붉은 글씨로 보이는 부분이 있습니다.

해당 내용은 migration을 하라는 것인데요. 기본 데이터베이스인 SQLight3를 사용하기 위해서도 진행해야 합니다. migration은 빠르게 진행이 뒵니다. 프로젝트를 설치한 폴더로 이동하면 db 파일이 생성된 것을 확인할 수 있습니다.


ⓑ 다른 데이터베이스 사용 설정

ⓐ에서와 마찬가지로 root폴더의 settings.py 파일의 DATABASES 설정 부분을 확인합니다.

  • root 폴더 > settings.py > DATABASES 설정

다른 데이터베이스를 이용한다는 것은 결국 USER, NAME, PASSWORD, HOST, PORT 등의 설정값을 지정하는 것이기도 합니다. 공식 문서에서 제공하는 예시는 다음과 같습니다.

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "mydatabase",
        "USER": "mydatabaseuser",
        "PASSWORD": "mypassword",
        "HOST": "127.0.0.1",
        "PORT": "5432",
    }
}

DATABASES의 default 값의 설정을 위의 예시와 같이 지정합니다. (참고 문서) 위 예시에는 postgresql을 ENGINE으로 사용한다고 되어 있습니다. 여기서 별도의 데이터베이스 엔진을 이용하게 된다면 아래와 같이 ENGINE부분을 수정할 수 있습니다.

  • django.db.backends.postgresql
  • django.db.backends.mysql
  • django.db.backends.sqlite3
  • django.db.backends.oracle
  • (장고와 함께 제공되지 않는 데이터베이스 백엔드 사용시)
    • mypackage.backends.whatever

외부에서 mysql, mariadb에 접속하여 이용해본 경험이 있다면 위 예시를 통해 기본적인 설정을 진행하는 것에는 큰 무리는 없을 것이라 생각됩니다. 또는 참고할 수 있는 문서(여기)를 통해 각 설정 값의 내용을 확인하여 적용하는데 활용할 수 있을 것입니다.

댓글 남기기