TIL59 - PostgreSQL을 Django에 연결하는 방법

PostgreSQL을 Django에 연결하는 방법


이전까지는 MySQL을 사용했었는데, 이번에 들어가는 회사는 PostgreSQL을 사용해서

PostgreSQL을 이용한 프로젝트를 만들며 Django에 대한 총복습을 했다.


1. 설치

  1. 나는 터미널에서 명령어를 입력해서 설치했다.
brew install postgresql
brew services start postgresql
  1. 설치한 PostgreSQL 버전을 확인
postgres -V

  1. PostgreSQL 접속
psql DB명
psql postgres

라고 입력하면 postgres가 이름인 데이터베이스에 접속하게 된다.

맨 처음에 접속하면 postgres=# 이렇게 나오고 뒤에는 명령어를 입력해보며 익혔다.

  1. DB Instance 확인
\l (\list 라고 입력해도 됨)

PostgreSQL을 처음 설치하면 최초 DB는 이렇게 3개가 생성되어 있다

  1. DB 생성

생성 코드

create database "DB명" with owner="owner" encoding="utf8" lc_collate="C" lc_ctype="c"

내가 작성한 코드

create database django_orm with owner='kylee' encoding='utf8' lc_collate='C' lc_ctype='C';

DB를 최초에 생성할 때, lc_collatelc_ctypetemplate와 같은 걸 사용하라고 나와서
DB명만 설정해줬다.

또한, C라고 설정해야 한글 정렬할 때 에러가 안생긴다고 한다.

그러면 이렇게 설정된 걸 확인할 수 있다.


2. Django와 연동

  1. settings.py 수정

settings.pyDATABASES 부분을 PostgreSQL에 맞게 수정해야 한다
(기본 세팅은 sqlite3로 되어있기 때문)

DATABASES = {
    'default': {
        'ENGINE': env('DB_ENGINE'),
        'NAME': env('DB_NAME'),
        'USER' : env('DB_USER'),
        'PASSWORD' : env('DB_PASSWORD'),
        'HOST' : env('DB_HOST'),
        'PORT' : env('DB_PORT')
    }
}

django-envirion을 설치 후 .env파일을 만들어서 값들을 숨겼는데, 설정한 값들은 이렇다.

DB_ENGINE='django.db.backends.postgresql'
DB_NAME='django_orm'
DB_USER='kylee'
DB_PASSWORD='1234'
DB_HOST='127.0.0.1'
DB_PORT=''

DB_PORT의 경우, 기본이 5432인데 입력해도 되고 저렇게 비워도 된다
(둘 다 해봤는데 이상없었음)

  1. psycopg2 설치

파이썬에서 PostgreSQL을 다루기 위해 설치한다.
MySQL을 사용할 때 설치한 pymysql 같은 개념이다.

맨 처음에 나는 아래와 같이 입력해서 설정했다.

pip install psycopg2

그런데 설치 후 서버를 켜면
Psycopg2 error: Symbol not found _PQbackendPID 라고 에러가 발생했다.

찾아보니,

psycopg2-binary를 설치해야 한다고 한다. 그래서 psycopg2 삭제 후 재설치를 했다.

pip uninstall psycopg2
pip install psycopg2-binary

그래서 왜 이렇게 하나 찾아보니, 공식문서에서 psycopg2-binary의 특징을
작성한 걸 찾을 수 있었다.

This will install a pre-compiled binary version of the module which does not require the build or runtime prerequisites described below.

얼추 해석해보자면, 컴파일된 버전을 설치할 수 있고, 따로 빌드할 필요 없다는 것 같다.

  1. INSTALLED_APPS에 추가

settings.pyINSTALLED_APPS에는 psycopg2 라고 추가한다.

  1. migrate

makemigrationmigrate를 거치면

이렇게 테이블이 만들어진 걸 확인할 수 있다.

좋은 웹페이지 즐겨찾기