2021.07.02 - [Python/Django(장고)] - [Python/Django] 파이썬 장고로 웹페이지 만들기 - 3. 모델, 어드민, 템플릿 태그
지난 포스트에서는 SQLite를 이용하여 모델을 만들고, 어드민 계정을 생성한 다음 간단한 템플릿 태그를 이용하여 웹에 출력하는데까지 해봤다.
이번에는 로컬 PC의 DB정보를 연결하고 템플릿 태그를 이용하여 웹 페이지에 출력하는것 까지 해보도록 하겠다.
1. DB를 사용하기 위한 준비
1. MariaDB 다운로드
https://mariadb.com/ko/downloads/
먼저 본인은 DB를 이용하기 위해 마리아 DB를 이용하였다. 위 페이지에서 다운로드 받을 수 있다.
MySQL과 구조상 동일하기 때문에 MySQL을 사용해도 무방하지만, 본인은 MariaDB를 다운로드 받아 사용해보도록 하겠다.
윈도우 버전을 맞춰 주고, 10.5.11 버전을 사용할 것이므로 다음과 같이 설정하고 다운로드 한다.
https://goddaehee.tistory.com/201
설치 과정은 해당 블로그를 참조하였다.
2. HeidiSQL 설치
https://www.heidisql.com/download.php
DB를 보다 쉽게 관리하기 위해서 HeidiSQL을 설치한다.
물론, MySQL을 사용하는 유저라면 MySQL Workbench 등을 사용해도 무방하지만 본인은 쉽게 설치할수 있는 HeidiSQL을 설치하여 사용하도록 하겠다.
해당 도구를 다운로드 받고 나면, 신규 버튼을 통해 세션을 추가해줄수도 있지만
MariaDB를 설치했으면, 이미 만들어진 세션 하나가 존재할 것이다.
MariaDB를 설치할 때 사용했던 사용자명과 비밀번호를 입력하여 열기 버튼을 눌러준다.
※ 이후 장고에서 모델을 가져올 것이므로 여기서 DB를 추가해주지 않아도 된다. 여기서는 heidisql로 어떻게 데이터를 변경하는지에 대해서만 알아보기 위해 적었다.
내부에 접속했으면, 기존에 만들어져있던 세션을 마우스 오른쪽 클릭 - 새로 생성 - 데이터베이스를 눌러 새로운 DB를 하나 생성시켜준다.
본인은 stock_test라는 이름으로 하나 생성해보도록 하겠다.
일단 이렇게 stock_test라는 DB를 만들고 나서
#stock_test
CREATE TABLE company_info(
code VARCHAR(10) PRIMARY KEY,
company VARCHAR(40),
last_update DATE
);
stock_test에 다음과 같이 입력해준다.
company_info에는 종목코드, 기업명, 업데이트일까지 해서 3개의 컬럼을 만들어 주도록 하겠다.
그러면 이렇게 테이블이 잘 만들어진 모습을 확인할 수 있다.
여기서는 임시로 테이블을 만들어주긴 했지만, 이후 설명할 pymysql을 이용하여 DB 연동 시, 장고에 있는 모델 정보가 stock_test에 추가될 것이기 때문에 데이터는 이후에 추가해주도록 하겠다.
2. Django에 DB 연결하기
1. pip install pymysql
가상 환경으로 돌아와서, pymysql이라는 모듈을 설치해주도록 한다.
해당 패키지는 MySQL과 파이썬을 쉽게 연동하기 위한 모듈로, MariaDB가 MySQL과 구조상 동일하기 때문에
해당 모듈을 사용하면 데이터베이스를 쉽게 연결할 수 있다.
2. settings.py 수정하기
settings.py 상단에 pymysql 모듈을 먼저 import 해준다.
# settings.py
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql',
'NAME': 'stock_test', #mysql
'USER': 'root', #root
'PASSWORD': 'test0000', #사용자의 비밀번호
'HOST': '', #공백으로 냅두면 default localhost
'PORT': '3306' #공백으로 냅두면 default 3306
}
}
그리고 하단 부분의 DATABASES 부분을 다음과 같이 수정해준다.
Name : '사용자의_DB명'
USER : DB를 생성할 때 사용했던 유저명
PASSWORD : DB 생성 시 사용했던 비밀번호
HOST : 외부 DB 사용 시 적어 줄 호스트 네임. 공백으로 두면 localhost(로컬 PC)
PORT : DB 설치 시 사용했던 포트명. 보통은 3306이다.
3. 서버 실행
runserver를 하면 또 데이터베이스의 변경된 사항이 존재하기 때문에 migrate 해달라고 한다.
그럼 이렇게 쭉 변경점이 나오게 된다.
이걸 다시 heidisql에 접속해서 확인해 보면
해당 DB에 Django와 관련된 정보들이 추가된 것을 확인할 수 있다.
이미 모델을 만들었었기 때문에 굳이 처음에 DB를 추가해주지 않았어도 됐을 것 같다.
뭐 여튼 다시 runserver를 시켜서 admin 페이지에 접속해보면 admin이 없다고 나올것이다.
관리자 계정이 없다고 나온 경우에는 python manage.py createsuperuser 명령어를 이용하여 다시 만들어주면 된다.
그럼 이렇게 빈 페이지가 추가된 것을 확인할 수 있다.
기존에는 SQLite에 데이터를 저장해두었기 때문에 출력값이 표시된 것이지만
여기서는 로컬 PC의 DB를 이용하기 때문에 관리자 계정 정보나 기존에 추가했던 데이터들이 없다.
그럼 이전에 설치했던 heidisql을 이용하여 데이터를 조금 넣어주도록 해보겠다.
모델에 있던 stock_company에 3개의 데이터를 넣어주었다.
종목코드, 기업명, 업데이트 날짜 순으로 기존에 모델에서 만들어주었던 구조가 그대로 DB에 적용된 모습을 확인할 수 있다.
그리고 다시 실행된 서버로 돌아가서 확인해보면
이렇게 DB가 잘 표시된 모습을 확인할 수 있다.
<!-- index.html -->
{% for company in company_list%}
<ul>
{{ company.code }}
{{ company.company }}
</ul>
{% endfor %}
{{ company_list.0.code }} {{ company_list.0.company}}
{{ company_list.1.code }} {{ company_list.1.company}}
다음 시간에는 본격적으로(?) 주식과 뉴스 정보를 받아올수 있도록 구조를 설정해보도록 하겠다.
'Python > Django(장고)' 카테고리의 다른 글
[Python/Django] 파이썬 주식 정보(뉴스) 페이지 만들기 - 2. 네이버 API를 이용하여 검색정보 받아오기 (0) | 2021.07.08 |
---|---|
[Python/Django] 파이썬 주식 정보(뉴스) 페이지 만들기 - 1. 구조 만들기 (2) | 2021.07.06 |
[Python/Django] 파이썬 장고로 웹페이지 만들기 - 3. 모델, 어드민, 템플릿 태그 (0) | 2021.07.02 |
[Python/Django] 파이썬 장고로 웹페이지 만들기 - 2. 앱, URL 매핑 (0) | 2021.07.01 |
[Python/Django] 장고로 웹페이지 만들기 - 1 (2) | 2021.06.30 |