본문 바로가기
Django

[Django] Django와 PostgreSQL 연동

by sum_mit45 2024. 7. 6.
728x90
반응형

0. 가정

- PostgreSQL이 설치되어 있다.

- Django 프로젝트가 생성되어 있다.

1. (postgreSQL) 데이터베이스 생성

postgreSQL에 데이터베이스를 생성해야 한다. 

CREATE DATABASE [데이터베이스 이름];
CREATE USER root WITH PASSWORD '비밀번호';
ALTER ROLE root SET client_encoding TO 'utf8';
ALTER ROLE root SET default_transaction_isolation TO'read committed';
ALTER ROLE root SET TIME ZONE 'Asia/Seoul';
GRANT ALL PRIVILEGES ON DATABASE [데이터베이스 이름] TO root;

 

ALTER ROLE [role_name] SET default_transaction_isolation TO 'isolation_level' ; 

- 위 명령어는 사용자의 기본 트랜잭션 격리 수준을 변경할 때 사용한다. 

- 설정할 트랜잭션 격리 수준으로는 read committed, repeatable read, serializable 등이 있다.

데이터베이스 및 사용자 생성 과정

2. (Django) Settings. py 설정

a. settings. py 코드 수정

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

 기존의 settings.py 코드에서 DATABASES 부분에서 코드는 위와 같을 것이다. 이는 기본적으로 sqlite3와 연결된 코드이다. 이 코드를 수정하여 postgreSQL에 연결할 것이다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '데이터베이스 이름',
        'USER': 'root',
        'PASSWORD': '비밀번호',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

 이와 같이 ENGINE을 postgresql로 변경해주고, 위에서 만든 데이터베이스 및 유저로 적용시켜 줄 수 있다. 

b. 환경 변수 설정

하지만 이 코드 그대로 사용하고, 깃허브에 올린다면 내 데이터베이스 이름 및 비밀번호 등등이 노출될 것이다. 

이를 방지하기 위해 사용하는 방법이 환경 변수로 설정하는 것이다. 

 

(1) django-environ 설치: pip install django-environ

 

(2) .env 파일 생성

- settings.py와 같은 level에서 .env 파일을 생성하면 된다.

 

- env 파일 작성

DB_NAME=데이터베이스이름
DB_USER=root
DB_PASSWORD=비밀번호
DB_HOST=localhost
DB_PORT=5432

 

(3) settings.py 파일 수정

from pathlib import Path
import environ

env = environ.Env()
environ.Env.read_env()

#DATABASE 설정 부분
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': env("DB_NAME"),
        'USER': env("DB_USER"),
        'PASSWORD': env("DB_PASSWORD"),
        'HOST': env("DB_HOST"),
        'PORT': env("DB_PORT"),
    }
}

이렇게 수정하면 된다. 

 

3. (Django) 데이터베이스에 기본 테이블 생성하기

- 장고 프로젝트를 시작하면 아래와 같이 기본적으로 생성되는 앱이 존재한다. (settings.py)

settings.py 파일에 기본 설치된 앱들

- 위와 같이 초기 설치된 앱들에서 사용하는 테이블을 위에서 생성한 데이터베이스에 생성할 것이다. 

a. psycog2 라이브러리 설치

- pip install psycopg2 명령어를 이용하여 설치한다. 

- 이 라이브러리는 Django와 PostgreSQL 간의 연결을 도와준다.

b. django migration 실행

Migration은 Django에서 모델의 변경 사항을 데이터베이스에 적용하는 과정이다. 

- python manage.py makemigrations 명령어로 초기 파일을 생성한다. 

- python3 manage.py migrate 명령어를 이용하여 생성된 migration 파일을 실제 데이터베이스에 적용하여 테이블을 생성한다.

 

migrate 후

4. (postgreSQL) 생성한 테이블 확인하기

pgAdmin을 통해 gui로 확인하는 방법과 psql을 통해 커맨드로 확인하는 방법이 있다.

나는 psql에서 커맨드로 확인했다.

 

(1) psql -U root -d qa_chatbot 명령어로 psql에 접속한다. 

(2) /dt 혹은 /dt+ 를 이용하여 확인할 수 있다.

테이블 생성되었는지 확인하기

 

728x90
반응형