DB/기본 실습

[PostgreSQL, Django] PostgreSQL 셋팅 (Local, Docker)

yubi5050 2022. 7. 14. 03:16

1-1. PostgreSQL 로컬 설치

설치 간 유의할 점 : root의 password 입력하는 란 나오는데 유의할 것.

 

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

 

Download PostgreSQL

PostgreSQL Database Download

www.enterprisedb.com

 

1-2. PostgreSQL Docker 설치

PostgreSQL을 Docker 환경에서 설치하고 싶다면 docker를 설치하고 아래 명령어를 실행 하면 된다.

--name : container 이름

-e : 환경변수로 postgresql의 password 넘겨줌

-v : docker container 종료시에도 db 데이터 유지되도록 volume 설정 <로컬 저장 path>:<postgre db data path>

-d : 사용할 postgresql 이미지

docker run -p 5432:5432 \
--name ksm-postgres \
-e POSTGRES_DB=findooh \
-e POSTGRES_PASSWORD=rlatjsals1! \
-e TZ='Asia/Seoul' \
-e PGTZ= 'Asia/Seoul' \
-v ./db/postgre:/var/lib/postgresql/data \
-d postgres:14.4-alpine

 

2. Django-PostgreSQL Connector 설치

python code 단에서 postgresql 을 사용하기 위해 connector 설치

$pip install psycopg2 # window
$pip install psycopg2-binary # linux, mac

 

3. pgAdmin4 접속해서 Create Database

PostgreSQL 설치 완료시, pgAdmin4가 자동으로 설치(mysql의 workbench와 유사) 되는데, root 계정(postgres)으로 접속해서 database를 생성

4. Django settings.py / my_settings.py 작성 

일반적으로 key 보호를 위해 my_settings.py 에 따로 작성하여 import 함 (dotenv 활용도 가능)

# settings.py
import my_settings
DATABASES = my_settings.POSTGRESQL_DATABASES

# my_settings.py
POSTGRESQL_DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '<your schema name>', # Schema Name
        'USER': 'postgres', # USER NAME
        'PASSWORD': <your passwd>, # PASSWORD NAME
        'HOST':'127.0.0.1',
        'PORT':'5432',
    }
}
# .env.local

NAME = 'db_schema_name' # Schema Name
DB_USER = 'postgres' # USER NAME
PASSWORD = 'rlatjsals1!' # PASSWORD NAME
HOST = '127.0.0.1' # HOST
PORT = '5432' # PORT

 

5. Django settings.py 작성

DATABASES = {
    # postgresql
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('NAME'), # Schema Name
        'USER': os.environ.get('DB_USER'), # Mac에선 USER 환경 변수가 존재하므로 DB_USER로 활용
        'PASSWORD': os.environ.get('PASSWORD'),
        'HOST': os.environ.get('HOST'),
        'PORT': os.environ.get('PORT'),
    }
}

 

 

6. Django ORM을 PostgreSQL에 migrate

$ python manage.py makemigrations
$ python manage.py migrate