1. PostgreSQL 설치
PostgreSQL 설치는 Windows 10 기준으로 작성하도록 하겠습니다.
장고와 연동하는 부분은 상관없이 진행하시면 됩니다.
다운로드 주소
: https://www.postgresql.org/download/
- 위의 다운로드 링크에 들어가서, Windows 버튼을 클릭합니다.
- Download the Installer를 클릭합니다.
- 원하는 버전을 다운 받아 설치를 진행합니다.
- Installer에서 Next 버튼을 누르며 설치를 진행하시면 됩니다.
설치 과정에서 superuser의 비밀번호 값은 반드시 잘 기억하거나 따로 저장하시는 것을 추천드립니다!
Port 값은 기본 값인 5432로 진행했습니다.
Locale은 "Korean, Korea"로 지정했습니다.
설치 경로는 기본 경로를 사용했습니다.
- 윈도우 키를 누르고 psql을 검색했을 때 확인이 된다면 잘 설치된 것입니다.
- psql에 접속해서 엔터를 누르며 진행하고, 설치 때 지정한 비밀번호를 입력해 PostgreSQL에 접속합니다.
- SELECT version(); 명령문을 통해 PostgreSQL의 설치와 버전을 잘 확인할 수 있습니다.
2. 장고와 연동하기
psql로 데이터베이스를 생성하고 아래와 같이 기본적인 세팅을 진행합니다.
(바로 위의 사진과 같은 상태인 postgres=# 에 명령어를 입력하시면 됩니다.)
CREATE DATABASE data_planet_db;
CREATE USER root WITH PASSWORD '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 data_planet_db TO root;
1. CREATE DATABASE {데이터 베이스 이름}
데이터 베이스를 생성하는 명령문입니다.
저는 진행 중인 프로젝트 이름으로 데이터 베이스명을 사용했습니다.
CREATE DATABASE data_planet_db; 명령어를 입력하고,
"CREATE DATABASE"라는 출력되었다면 완료입니다.
2. CREATE USER {유저 아이디} WITH PASSWORD {'패스워드 값'};
본인이 사용하고 싶은 유저 아이디 값과 패스워드를 설정하는 명령문입니다.
저는 root라는 유저 아이디 값과 적당한 패스워드를 설정했습니다.
CREATE USER root WITH PASSWORD '지정 값'; 명령어를 입력하고,
"CREATE ROLE"이 출력되었다면 완료입니다.
3. 인코딩, isolation, timezone, user 권한 주기
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';
위의 각 명령문을 입력하고,
"ALTER ROLE"이 출력된다면 완료입니다.
GRANT ALL PRIVILEGES ON DATABASE data_planet_db TO root;
저는 앞서 data_planet_db라는 데이터 베이스와 root라는 유저를 생성했기 때문에,
위의 명령문을 입력했습니다.
"GRANT"가 출력된다면 완료입니다.
psql 쉘은 "\q"를 입력해 종료할 수 있습니다.
4. settings.py 코드 수정
프로젝트의 settings.py에서 기본적으로 설정된 sqlite3에 대한 부분을 변경하는 내용입니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
위와 같은 코드를 아래와 같이 변경합니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': '생성한 데이터 베이스 이름',
'USER': '생성한 유저 이름',
'PASSWORD' : '생성한 패스워드 값',
'HOST' : 'localhost',
'PORT' :'',
}
}
5. (생략 가능) .env로 중요 정보 다루기
데이터베이스의 user, password 또는 django secret key등을 .env파일로 생성해 보안에 좀 더 신경쓴 코드를 작성할 수 있습니다.
GitHub에 장고 프로젝트를 올릴 때, .env파일을 만들어 .gitignore에 추가해 놓으면 작업하면서 사용하는 중요 정보들이 외부로 유출하는 상황을 막을 수 있습니다.
pip install django-environ
위의 pip 명령어를 통해 environ을 설치할 수 있습니다.
위와 같이 장고에 프로젝트 폴더 내부에 .env파일을 생성합니다.
.env 파일의 내용입니다.
"""
Django settings for Data_Planet project.
Generated by 'django-admin startproject' using Django 4.1.3.
For more information on this file, see
https://docs.djangoproject.com/en/4.1/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.1/ref/settings/
"""
import environ
env = environ.Env()
environ.Env.read_env()
# 장고 시크릿 키가 설정되어 있는 부분
SECRET_KEY = env("SECRET_KEY")
# DB 설정 부분
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"),
}
}
.env파일을 적용시킨 settings.py의 내용입니다.
단순히 연동만 해보고자 한다면 5번의 과정은 생략해도 좋습니다.
6. PostgreSQL에 기본 테이블 생성하기
장고 프로젝트를 시작하면 기본적으로 생성되는 앱이 존재합니다.
해당 내용은 settings.py에서도 코드로 확인할 수 있습니다.
# settings.py
# Application definition
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
]
위와 같이 초기 설치된 앱들에서 사용하는 DB 테이블을 앞의 과정에서 생성한 데이터 베이스에 생성해보도록 하겠습니다.
우선 다음 명령어로 psycopg2 라이브러리를 설치합니다.
pip install psycopg2
설치 후 migrate 명령을 수행합니다.
저는 파이참 터미널에서 진행했습니다.
python manage.py migrate
문제가 발생하지 않는다면,
Applying ~~~~~~~ ... OK의 문구가 쭉 나오시는 것을 확인할 수 있습니다.
6.1. public에 접근 권한 error 발생시
migrate를 했는데, 다음과 같은 에러가 발생할 수 있습니다.
(psycopg2.errors.InsufficientPrivilege: permission denied for schema public)
public 스키마에 대해 권한이 없어 테이블을 생성하지 못했다는 에러인데,
아래와 같이 psql에서 생성한 유저에게 권한을 주는 명령문을 통해 해결했습니다.
ALTER USER {생성한 유저명} SUPERUSER;
7. 생성한 테이블 직접 확인하기
테이블 생성이 제대로 된 것인지, 직접 확인하기 위한 방법입니다.
pgAdmin을 통해 gui로 확인하는 방법과 psql을 통한 커맨드 라인으로 확인하는 방법이 있습니다.
1) pgAdmin 4
- PostgreSQL을 설치하면서 같이 설치된 pgAdmin 4를 실행해, superuser 비밀번호를 입력합니다.
- Servers > PostgreSQL > Databases > 생성한 데이터베이스 > Schemas > public > Tables의 경로에서 테이블이 생성된 것을 확인할 수 있습니다.
2) psql 커맨드 라인
psql을 실행하고 Database에 생성한 데이터베이스명을 입력하고,
유저와 비밀번호를 입력해 해당 데이터베이스로 접근합니다.
그리고, \dt 혹은 \dt+ 명령어를 통해 생성된 테이블을 확인할 수 있습니다.
'웹 프로그래밍 > Django' 카테고리의 다른 글
[Django] 회원가입 구현과 패스워드 암호화(bcrypt) (0) | 2022.12.13 |
---|---|
[Django] 6. 장고 URL 지정하기(라우팅) - urls.py, views.py (0) | 2022.05.02 |
[Django] 5. 장고 모델 만들고 반영해보기(2) - 세부 설정 (0) | 2022.05.02 |
[Django] 4. 장고 모델 만들고 반영해보기(1) - models.py (0) | 2022.05.02 |
[Django] 3. 장고로 앱 생성하기 - manage.py startapp (0) | 2022.05.02 |
댓글