Django 설치 후 증권데이터를 수집/관리하기 위해 PostgreSQL 을 설치하여 연동한다.
PostgreSQL 은 Django 에서 사용 권장하며 최적화되어있다고 명시되어 있는 DB라서 선택하였다.
PostgreSQL은 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템(ORDBMS)의 하나이다. BSD 허가권으로 배포되며 오픈소스 개발자 및 관련 회사들이 개발에 참여하고 있다. 데이터베이스 서버로서 주요 기능은 데이터를 안전하게 저장하고 다른 응용 소프트웨어로부터의 요청에 응답할 때 데이터를 반환하는 것이이다. 소규모의 단일 머신 애플리케이션에서부터 수많은 동시 접속 사용자가 있는 대형의 인터넷 애플리케이션(또는 데이터 웨어하우스용)에 이르기까지 여러 부하를 관리할 수 있으며 macOS 서버의 경우 PostgreSQL은 기본 데이터베이스이다.마이크로소프트 윈도우, 리눅스(대부분의 배포판에서 제공됨)용으로도 이용 가능하다.
PostgreSQL 을 사용해본 적은 없지만 다른 RDBMS 의 기능들은 거의 다 갖추고 있다고 한다.
PostgreSQL 설치하기
https://www.postgresql.org/download/ 링크에 접속하여 각 운영체제에 맞는 설치 파일을 다운로드 한다. 나는 WIndows Server 를 사용 중이기 때문에 Windows 버전으로 다운받아 설치한다. 버전은 최신버전인 13으로 하였다.
Installer 의 Default 설정으로 우선 설치를 완료한 후 Windows 키를 눌러 SQL Shell 창을 띄운다.
이후 SQL Shell Prompt 에서 localhost, Database 등을 설정할 수 있다. 원하는 설정을 해도 되지만 아무런 입력값을 주지 않으면 "[]" 안의 기본 값들로 설정이 된다. 나는 기본 값들로 DB 설정을 했다.
Database 구성
PostgreSQL 설치가 끝났다면 DB 생성을 해 주어야 한다. 실행하고 설정한 SQL Shell 에서 다음과 같은 명령들을 입력한다.
1. Database 생성
create database django_test;
create user django_test with password 'django_test';
alter role django_test set client_encoding to 'utf-8';
alter role django_test set timezone to 'Asia/Seoul';
grant all privileges on all tables in schema public to django_test;
2. PostgreSQL 라이브러리 설치
VSCode 의 터미널에서 psycopg2 를 설치한다.
pip install psycopg2
3. Django 설정
생성한 프로젝트인 mysite의 settings.py 파일을 열어 Database 를 설정한다.
우선 DB 설정 전 TIME_ZONE 을 설정한다.
TIME_ZONE = 'Asia/Seoul'
Database 를 설정한다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'django_test',
'USER': 'django_test',
'PASSWORD': 'django_test',
'HOST': 'localhost',
'PORT': 5432,
}
}
BASE_DIR, TEMPLATES 를 설정한다. 설정하기 전 settings.py 상단에 import os 를 추가한다.
import os
...
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
...
TEMPLATES = [
{
...
'DIRS': [ os.path.join(BASE_DIR, 'templates') ],
...
},
]
project 최상단 mysite 디렉터리 아래 templates 디렉터리를 생성한다.
마지막으로 VSCode Terminal 에서 migrate 를 수행한다.
python ./manage.py migrate
4. App 생성
이제 설정한 PostgreSQL 을 Django App 을 통해 DB Control을 테스트해본다.
mysite 경로에서 아래 명령어로 polls 라는 이름의 app 을 생성한다.
python manage.py startapp polls
생성된 polls 디렉터리의 views.py 파일을 수정하여 View 를 작성한다.
# polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
polls 디렉터리 아래 urls.py 파일을 생성하여 routing 경로를 잡아준다.
# polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
mysite 아래 urls.py 를 수정하여 polls routing 을 설정한다.
# mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
polls 아래 경로의 models.py 를 수정하여 모델을 생성한다.
# polls/models.py
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
현재 mysite 프로젝트에 polls app 이 생성된 것을 알리기 위해 settings.py 를 수정한다.
#mysite/settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig',
...
]
이제, Django는 polls 앱이 포함된 것을 알게 되었고 아래 명령을 수행시킨다.
python manage.py makemigrations polls
명령 수행 결과 polls 경로 아래 migrations 디렉터리가 생성되었고 그 아래 0001_initial.py 파일이 생성된 것을 확인할 수 있다.
아래 명령으로 생성된 0001_initail.py 스크립트가 SQL 문장으로 어떻게 표현되는지 확인한다.
python manage.py sqlmigrate polls 0001
이제 마지막으로 migrate 를 실행하여 DB 모델과 관련된 테이블을 생성한다.
python manage.py migrate
migrate 명령은 명령은 아직 적용되지 않은 마이그레이션을 모두 수집해 이를 실행하며 이 과정을 통해 모델에서이 변경 사항들과 DB 의 스키마의 동기화가 이루어진다.
migration 결과는 SQL Shell 을 통해서 확인할 수 있다.
\c django_test
\dt
migration 결과로 테이블이 생성된 것을 확인할 수 있다.
5. PostgreSQL 관리앱
PostgreSQL 설치 시 기본으로 제공되는 앱 중 pgAdmin4 앱을 통하면 Shell 명령이 아닌 Web UI로 관리를 할 수 있다.
Windows 키를 눌러 pgadmin4 를 입력하면 다음과 같은 App 을 찾을 수 있다.
해당 앱을 실행 후 설정한 패스워드로 접속 시 Databsae 를 UI로 확인할 수 있다.
정리
우선 Django 에서 제공하는 튜토리얼과 아래 참고 링크의 블로그들을 참조하여 PostgreSQL 설치와 Django 연동을해 보았다.
우선 migration 과 DB 사용을 위한 기초 워밍업을 위해 정리를 해 보았지만 자세한 내용들은 Django 튜토리얼 문서에 기재되어 있다.
Table 생성 되는 것을 확인하였으니 다음은 주식정보를 획득하기 위한 DB 설계와 주식 데이터 수집을 위한 API 연동을 하려 한다.
참고링크
- https://dora-guide.com/postgresql-install/
- https://doorbw.tistory.com/183
- https://jungeunlee95.github.io/django/2019/06/19/Django-postgrsql-%EC%97%B0%EB%8F%99-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0/
- PostgreSQL 기본 강좌
- https://docs.djangoproject.com/ko/3.1/intro/tutorial01/
- https://docs.djangoproject.com/ko/3.1/intro/tutorial02/
'주식 공부' 카테고리의 다른 글
[주식거래자동화] 06. KOSPI 종목코드 및 일별 데이터 조회 (1) | 2020.12.09 |
---|---|
[주식거래자동화] 05. Kiwoom API 설치 및 테스트 (0) | 2020.12.06 |
[주식거래자동화] 03. VSCode 에 Python 개발 환경 설정 (2) | 2020.10.19 |
[주식거래자동화] 02. Django 설치 및 실행 (0) | 2020.10.18 |
[주식거래자동화] 01. EC2 Windows Server 개발환경 구축 (0) | 2020.10.18 |