TigerCow.Door


안녕하세요. 문범우입니다.

이번 포스팅에서는 django에서 postgreSQL을 사용하는 방법에 대해서 알아보도록 하겠습니다.

현재 진행되는 환경은 django 2.0 / OS X / python 3.6.4 입니다.


1. postgreSQL 설정


postgreSQL은 관계형데이터베이스 중 하나로써, 먼저 이를 사용하기 위해 설치를 필요로 합니다.


postgreSQL 설치방법은 아래 글에 나와있으니 참고하시길 바랍니다.


http://doorbw.tistory.com/179?category=711158


postgreSQL 설치가 완료되었으면 터미널로 아무 데이터베이스나 접속합니다.

그리고 django에서 사용할 데이터베이스를 새로 만들어보도록 하겠습니다.


create database django_test;


를 입력합니다.



그리고 새롭게 만든 데이터베이스로 들어갑니다.


새롭게 만든, django_test 데이터베이스로 들어왔으면, 새로운 유저를 만들고 몇가지 설정과 함께 권한을 부여합니다.

순서대로 아래의 명령어를 입력합니다.


create user root with password 'password';

root는 유저 이름이고, password는 비밀번호입니다. 이때 비밀번호는 따옴표로 감싸주어야 합니다.

alter role root set client_encoding to 'utf-8';

alter role root set timezone to 'Asia/Seoul';

grant all privileges on database django_test to root;



위와 같이 하면 데이터베이스에 대한 설정이 마무리됩니다.



2. django 설정


먼저, django 설정을 진행하기 전에 필요한 것을 설치해야 됩니다.


psycopg2 라는 것을 설치해야 되는데, 터미널창에서 pip로 설치를 진행합니다.


pip install --no-binary :all: psycopg2




이렇게 설치가 마무리 되었으면, 이제 postgreSQL을 적용할 django 프로젝트로 들어가서 settings.py 파일을 열어봅니다.


그리고 그 중 아래와 같이 installed_apps 항목을 찾아서 우리가 만든 app을 추가합니다.




그리고 아래와 같이 database항목을 찾아봅니다.




위의 DATABASES 항목을 아래와 같이 수정합니다.


1
2
3
4
5
6
7
8
9
10
DATABASES = {
    'default': {
        'ENGINE''django.db.backends.postgresql',
        'NAME''django_test',
        'USER''root',
        'PASSWORD''password',
        'HOST''localhost',
        'PORT''',
    }
}
cs


name은 database의 이름을

user는 user의 이름,

password에는 user의 비밀번호를 입력합니다.


그리고 blog라고 새롭게 만든 app의 models.py 파일을 열어서 아래와 같이 작성합니다.


1
2
3
4
5
6
7
from django.db import models
 
# Create your models here.
class Post(models.Model):
    name = models.CharField(max_length = 20)
    content = models.TextField()
 
cs


이것은 우리가 blog라는 앱에서 데이터베이스 내부에 Post라는 table을 만드는 것이라고 생각하시면 됩니다.

일단은 간단하게 name과 content만을 갖도록 하였고, id같은 경우는 자동적으로 만들어지게 됩니다.


이렇게 까지 하고 django 프로젝트 폴더로 들어가서 아래와 같은 명령어를 입력해 줍니다.


python manage.py makemigrations


python manage.py migrate


이렇게 하고 


python manage.py runserver


를 통해 서버가 정상적으로 돌아가는지 확인합니다.


이제 다시 postgresql로 돌아와 우리가 만든 테이블이 잘 있는지 확인해보겠습니다.

실제로 django project내에서 따로 admin 페이지를 통해 확인할 수도 있지만, admin과 관련된 것은 다음포스팅에서 다뤄보도록 하겠습니다.


postgresql 터미널로 들어와서 아래 명령어를 입력하여 테이블 리스트를 확인합니다


\dt 



다양한 테이블이 많은데, 그중 가운데쯤 잘 보시면 blog_post 라는 테이블이 있습니다.

해당 테이블이 우리가 위에서 django 프로젝트를 통해서 만들게된 테이블입니다.



이렇게 하여 django 프로젝트에서 데이터베이스를 postgresql 로 연결하는 방법을 알아보았습니다.

다음 포스팅에서는 admin을 사용해보면서 실제로 데이터베이스에 데이터를 입력하고 확인해보도록 하겠습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

안녕하세요. 문범우입니다.

최근 데이터베이스 관련 공부를 시작했는데, 기준으로 잡은 책에서 PostgreSQL을 사용합니다.

이에 따라 공부한 내용들을 정리해가며 PostgreSQL에 대한 내용을 포스팅하려 합니다.

오늘은 그 첫번째로, 맥 또는 윈도우에 PostgreSQL을 설치하고 데이터베이스에 진입하는 방법에 대해서 설명드리도록 하겠습니다.


1. 윈도우 환경에서 설치하기


먼저 아래, PostgreSQL 공식사이트에 들어갑니다.


https://www.postgresql.org/




그럼 위와 같은 사이트에 접속되는데, 상단의 Download를 클릭합니다.



그리고 윈도우 운영체제를 눌러줍니다.



그리고 Download the Installer 를 눌러서 설치파일을 다운 받습니다.


이후 다운받은 exe 파일을 실행시켜 설치를 진행합니다.

경로는 기본으로 놔두고, 중간에 password를 입력하는 부분은 추후에 사용되니 까먹지 않도록 합니다.


또한 포트를 설정하게 되어 있는데, 주로 5432를 사용하니, 잘 모르겠다 하시는 분들은 5432로 포트를 설정합니다.


마지막쯤에 Stack bulider 설치여부는 체크를 해제하고 마무리합니다.


이후는 3. PostgreSQL 시작하기를 참고해주세요.



2. 맥 환경에서 설치하기


맥에서 PostgreSQL을 설치하는 방법은 크게 2가지 입니다.


brew 패키지를 이용해서 설치하거나, 앱을 이용해서 설치하는 방법입니다.


개인적으로는 brew 를 이용한 설치보다 앱을 이용한 설치가 간편했기에 해당 방법을 안내해드리도록 하겠습니다.


https://postgresapp.com/


위의 사이트로 들어가 아래 그림과 같이 download를 클릭합니다.


그럼 dmg 파일을 내려받게 되는데, 이후 해당 파일을 실행시켜 쭉 진행하면 됩니다.

패스워드는 추후 사용되므로 까먹지 않도록 설정하고, 포트는 5432로 설정합니다.



3. PostgreSQL 시작하기


윈도우 또는 맥에서 PostgreSQL 설치가 끝나고, 해당 프로그램을 실행하면 다음과 같은 화면이 뜨게 됩니다.



해당 화면에서 보이는 3개의 원통은, 각각 데이터베이스를 뜻하고 그 아래 데이터베이스의 이름이 적혀있습니다.


처음 설치하시는 분들은 위와 같이, 제일 좌측에 자신의 User이름으로 된 데이터베이스와 나머지 2개의 데이터베이스가 기본으로 구성되어 있습니다.


자신이 진입하고자 하는 데이터베이스를 더블클릭하면 해당 데이터베이스로 들어가지면서 터미널 또는 cmd창이 켜질 것 입니다.


이제 해당 데이터베이스에서 자신이 원하는 작업을 실행하면 됩니다.


테이블을 만들거나 컨트롤 하는 방법에 대해서는 다음 포스팅에서 다뤄보도록 하겠습니다.

'Database > PostgreSQL' 카테고리의 다른 글

PostgreSQL #1_ 맥, 윈도우에 postgresql 설치하기  (0) 2018.07.16
블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc