PostgreSQL + Django 연동하기

PostgreSQL + Django 연동하기

PostgreSQL 재설치

지난번에 깔았던 거 지우고

(C:\Program Files\PostgreSQL\14 에 uninstaller가 있었다. 이거 누르기만 하면 알아서 잘 지워줌)

Download PostgreSQL

다시 깔았더니 디폴트로 포트번호 5432가 제대로 나왔다.

지난번에 컴퓨터에 13이 깔려있어서 5432가 사용 중이라 5433이 떴었나봄

postgreSQL 깔면서 정하는 비밀번호는 postgreSQL 슈퍼유저 비밀번호라 내가 쓰는 비밀번호 써도 되는 것 같다. (유저네임은 디폴트 postgres)

Django와 연동시키기

클론받은 프로젝트의 settings.py 데이터베이스 설정은 다음과 같았다.

DB이름: watti, 유저아이디: root, 유저비밀번호: ****

잘 모르니까 그냥 저거에 맞춰서 만듦 (초기세팅도 동일)

근데 왜 직접 타이핑해서 치면 구문 오류 나고 복붙해서 붙이면 잘되는지 모르겠음

혹시 모르니까 텍스트로 붙여넣(어놓)기

SQL shell (psql)

CREATE DATABASE watti;
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 watti To root;

이것도 설치해줘야함!

$ pip install psycopg2

이러고 makemigrations && migrate 하면 이제 오류 안나고 런서버 잘 돌아감


정리

SQL shell(psql)에서 데이터베이스 & 유저 생성 및 권한 설정 후

# 데이터베이스 생성
CREATE DATABASE 데이터베이스이름;

# 유저아이디 & 비밀번호 지정
CREATE USER 유저아이디 WITH PASSWORD '유저비밀번호';

# 인코딩, isolation, timezone 설정
ALTER ROLE 유저아이디 SET client_encoding TO 'utf8';
ALTER ROLE 유저아이디 SET default_transaction_isolation TO 'read committed';
ALTER ROLE 유저아이디 SET TIME ZONE 'Asia/Seoul';

# 유저에게 데이터베이스 접근 권한 주기
GRANT ALL PRIVILEGES ON DATABASE 데이터베이스이름 To 유저아이디;

settings.py에서 위에서 만든 데이터베이스와 장고를 연동시킨다.

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


Reference

[Django] 튜토리얼 ② : Django 설치부터 PostgreSQL DB 연동까지

좋은 웹페이지 즐겨찾기