이전까지는 MySQL
을 사용했었는데, 이번에 들어가는 회사는 PostgreSQL
을 사용해서
PostgreSQL
을 이용한 프로젝트를 만들며 Django
에 대한 총복습을 했다.
brew install postgresql
brew services start postgresql
PostgreSQL
버전을 확인postgres -V
PostgreSQL
접속psql DB명
psql postgres
라고 입력하면 postgres
가 이름인 데이터베이스에 접속하게 된다.
맨 처음에 접속하면 postgres=#
이렇게 나오고 뒤에는 명령어를 입력해보며 익혔다.
DB Instance
확인\l (\list 라고 입력해도 됨)
PostgreSQL
을 처음 설치하면 최초 DB는 이렇게 3개가 생성되어 있다
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_collate
와 lc_ctype
은 template
와 같은 걸 사용하라고 나와서
DB
명만 설정해줬다.
또한, C
라고 설정해야 한글 정렬할 때 에러가 안생긴다고 한다.
그러면 이렇게 설정된 걸 확인할 수 있다.
settings.py
수정settings.py
의 DATABASES
부분을 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
인데 입력해도 되고 저렇게 비워도 된다
(둘 다 해봤는데 이상없었음)
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.
얼추 해석해보자면, 컴파일된 버전을 설치할 수 있고, 따로 빌드할 필요 없다는 것 같다.
INSTALLED_APPS
에 추가settings.py
의 INSTALLED_APPS
에는 psycopg2
라고 추가한다.
migrate
makemigration
과 migrate
를 거치면
이렇게 테이블이 만들어진 걸 확인할 수 있다.