Django와 PostgreSQL 연결하기

Tony Lee·2023년 4월 10일
1

knowledge

목록 보기
1/16
post-thumbnail

요구사항

장고 설치

$ pip3 install Django

postgres와 파이썬을 연결시켜줄 psycopg2 설치

$ pip3 install psycopg2

설치에서 wheel 에러가 나시는 분들은 아래 방법으로 설치

$ pip3 install psycopg2-binary

.env 파일을 읽기 위해

$ pip3 install python-dotenv

새로운 프로젝트 디렉토리 생성

$ django-admin startproject myproject

앱 생성

$ python3 manage.py startapp myapp

Postgres 서버 만들기

pgadmin create new server

처음에 들어가시면 왼쪽에 Servers 에 아무것도 없을겁니다. 그림에 표시된 Add New Server 클릭하시고,

Name은 기억하기 쉬운 이름으로 하면 됩니다. 저는 django_postgres로 했습니다.

제가 한참 찾은 부분은 Host name/address 였는데, localhost로 지정하시면 알아서 로컬호스트에 접속됩니다.
Port는 디폴트 값 사용하시고,
Maintenance_db = postgres,
Username은 본인이 원하시는 이름,
Password 또한 본인 지정입니다.

이제 서버 만들기는 끝났습니다. 정말 쉽죠?
아래 이미지는 기본 값으로 local_postgres가 만들어졌고 데이터 베이스 이름도 지정됐습니다.

django settings.py

로컬 서버를 장고 앱과 연동합니다.

myapp/settings.py에 들어가시면,
DATABASES 라는 해쉬테이블이 있습니다.

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

위 값을 아래와 같이 바꿔줍시다.

from dotenv import load_dotenv
import os
load_dotenv()

...

DATABASES={
   'default':{
      'ENGINE':'django.db.backends.postgresql_psycopg2',
      'NAME':'django_postgres',
      'USER':'postgres',
      'PASSWORD':os.getenv("POSTGRES_PW", None),
      'HOST':'localhost',
      'PORT':'5432',
   }
}

.env파일을 쓰는 이유는 보안을 위해 django_key, postgres_pw 같은 값을 저장하기 위해서입니다.
제일 상위 디렉토리에 .env 파일을 만드시면 됩니다. 그리고 파일 안에

DJANGO_SECRET_KEY = "YOUR_DJANGO_KEY"
POSTGRES_PW = "YOUR_PW"

해주시면 load_dotenv()를 통해 variable을 불러올 수 있습니다.
GitHub에 올리실때 유용하니 습관처럼 해주시면 좋습니다!
물론 .env는 .gitignore에 추가하셔야합니다.

장고 자체적으로도 dotenv가 가능하지만, 저는 그냥 익숙했던 python-dotenv를 사용했습니다.

pip3 install django-dotenv

Migrate!

이제 끝났습니다!

$ python3 manage.py migrate

이 커맨드 하나면 postgres와 django는 알아서 default table을 만듭니다.


이런 커맨드와 함께

아름다운 데이터 베이스가 나옵니다.

여기까지 postgreSQL과 django를 연결하는 방법이었습니다!

profile
Striving to have a positive impact on the community

0개의 댓글