본문 바로가기
django

[django]postgres DB와 연동하기

by 전봇대파괴자 2022. 2. 14.

postgres DB와 django를 연동, 사용하는 방법에 대해 서술한 문서입니다. 아래의 문서는 models.py에서 table 및 column을 이미 생성한 후라고 가정하겠습니다. 

 

0. postgresql이란?

postgresql, 혹은 postgres DB는 데이터베이스 관리 시스템(DBMS) 중 하나로 무료로 제공되고 있습니다. RDBMS 오라클(Oracle)의 개발자들이 개발에 많이 참여하였기 때문에 오라클과 비슷한 부분이 있습니다. 한국에서 많이 사용되진 않지만 전세계적으로 DB 점유율이 꾸준히 증가하는 DB입니다.

무료임에도 부지런한 업데이트로 지속적인 기능 추가가 이루어지고 있습니다. 또한 라이선스에 대한 비용 문제가 발생하지 않고, 오랫동안 사용된 오픈소스인만큼 안정적이고, 신뢰도가 높은 편입니다.

 

1. postgresql 설치

아래의 설치는 MAC os Catalina를 기준으로 하고 있습니다.

brew install postgresql
pg_ctl -D /usr/local/var/postgres start && brew services start postgresql
postgres -V

 

2. postgresql database 생성

django와 연동할 database를 생성합니다.

create database django_test;
create user user_id with password 'password';
alter role user_id set client_encoding to 'utf8';
alter role user_id set default_transaction_isolation to 'read committed';
alter role user_id set time zone 'Asia/Seoul';
grant all previleges on database 'database name' to user_id;
\q

 

3. django 설정

postgres와 연동하기 위한 밑작업입니다.

pip install psycopg2

settings.py

DATABASES = {
	'default': {
		'ENGINE': 'django.db.backends.postresql',
		'NAME' : 'database name', # 연동할 database 명
		'USER' : 'user_id', # database user id
		'PASSWORD' : 'password', # database password
		'HOST' : 'localhost', # 로컬 database일 경우!
		'PORT' : 5432,
	}
}
 
 

4. 연동 확인

가장 확실하게 확인해볼 수 있는 방법은 아래와 같습니다.

  1. django에서 테이블을 삭제한다.
  2. python manage.py makemigrations -> python manage.py migrate를 진행한다.
  3. 다시 terminal을 통해 postgres에 접속하고, 해당 테이블이 존재하는지를 확인한다.
# models.py 변경사항 반영
python manage.py makemigrations
python manage.py migrate

# postgres DB 접속
psql postgres
\l # database 목록 조회
\c "선택할 database 명" # database 선택 
\dt # 선택한 database 내 table 조회