안녕하세요 성조입니다.
이번 프로젝트에 있어서 무난하게 사용되는 RDMS인 MYSQL를 활용하기로 했습니다.
그래서 VSCODE + Python_Django + MYSQL의 환경을 구축하려고 합니다.
이전 포스팅
2022.09.28 - [Python 🐍/Django] - [Django] Vscode 가상환경에서 장고(Django) 프로젝트 시작하기
이전 포스팅에서 등록했던 가상 환경(Djangoenv)을 켜준다.
settings 값 조정하기
"""
Django settings for aptitude project.
Generated by 'django-admin startproject' using Django 4.1.1.
For more information on this file, see
https://docs.djangoproject.com/en/4.1/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.1/ref/settings/
"""
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'aptitude.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'aptitude.wsgi.application'
# Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/4.1/topics/i18n/
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/
STATIC_URL = 'static/'
# Default primary key field type
# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
SECRET_KEY는 Github에서 올리지 않도록 반드시 .gitignore 파일로 조정하여 Github에 공개된 Repo로 업로드 되지 않도록 주의하자.
gitignore.io에 대해서 위와 같이 settings.py를 입력하셔도 되지만 다음의 사이트에서 만들 수 있다.
https://www.toptal.com/developers/gitignore
# Internationalization
# https://docs.djangoproject.com/en/4.1/topics/i18n/
아래에 있는 LANGUAGE_CODE와 TIME_ZONE의 값을 다음과 같이 변경한다.
# Internationalization
# https://docs.djangoproject.com/en/4.1/topics/i18n/
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_TZ = True
Django(VSCODE 환경)에서 MYSQL 설치하기
MYSQL와 연동하기 전 설치가 안 됐다면 설치를 진행하자.
2021.11.24 - [Database/Mysql] - MySQL 설치 방법 (입문용) (OS - Windows)
다음의 터미널 창에 [pip install mysqlclient]를 입력한다.
pip install mysqlclient
설치가 완료되면 다음과 같이 가상 환경에 mysqldb, mysqlclient가 설치된 것을 알 수 있다.
database 정보 sqlite에서 mysql로 수정하기
settings.py에 있는 DATABASE에 있는 sqlite의 값을 mysql 값으로 수정해야 한다.
보안상 이유로 settings를 본인은 github에 업로드하지 않았다. 평균적으로 mysettings를 추가하여 settings의 secret key 값을 mysettings과 같은 설정 파일로 빼는 경우가 있다.
본인은 gitignore에 있는 local_settings라는 파일 이름을 활용하여 mysql 세팅 값과 secret key를 빼서 작성해 보려 한다.
위 mysettings.py를 만들고 다음의 내용을 복사 붙여넣기해서 칸을 채운다.
# 현재 데이터베이스의 값을 입력한다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 사용할 데이터베이스 엔진
'NAME': '', # 데이터베이스 이름
'USER': '', # 접속할 Database 계정 아이디 ex) root
'PASSWORD': '', # 접속할 Database 계정 비밀번호 ex) 1234
'HOST': '', # host는 로컬 환경에서 동작한다면 ex) localhost
'PORT': '', # 설치시 설정한 port 번호를 입력한다. ex) 3306
}
}
# settings.py에 있던 시크릿 키를 아래 ''안에 입력한다.
SECRET_KEY =''
windows환경인 경우.
로컬 포트 값은 workbench의 빨간 박스 끝에 4개 번호로 볼 수 있다.
저 위치에 있는 것이 포트 번호다.
mysettings.py에 위 사진의 설명들과 같이 내용을 채운다.
스키마가 없는 경우 사용하는 엔진에서 본인은 mysql에서 다음과 같이 SQL을 활용하여 database schema를 생성한다.
CREATE SCHEMA `aptitudedb` ;
vscode에서는 .gitignore에 있는 값을 잘 적용하는 것을 주의하자.
local_settings.py의 값이 모두 설정됐으면 settings.py로 와서 다음과 같이 작성한다.
database, secret_key를 가져온다.
경로 설정이 끝났다면 다음을 입력하여 마이그레이션을 진행해 준다.
python manage.py migrate
서버실행시 터미널에 다음과 같이 입력한다.
python manage.py runserver
정상적으로 서버가 동작되는 것을 확인할 수 있으며, 관리자 계정으로 접속한 창이 한국어 설정이 된 것을 확인할 수 있다.
오늘 포스팅은 mysql 서버 연동과 비밀 키를 어떻게 적용시키는지에 대해서 다뤄봤습니다.
잘못된 지식 전달 사항이 있는 경우 언제든지 댓글 부탁드리겠습니다!
궁금하신 부분도 언제든 댓글 부탁드립니다!
감사합니다.다음 포스팅 때 뵙겠습니다!
'Python 🐍 > Django' 카테고리의 다른 글
[Django] 페이지 이동을 위한 URL 분리하기 (2) | 2022.10.07 |
---|---|
[Django] 관리자 계정 생성하기(admin) (0) | 2022.10.06 |
[Django] 장고(Django) 홈 페이지 만들기(home view) (1) | 2022.10.05 |
[Django] 장고(Django) App 시작하기 (0) | 2022.10.03 |
[Django] Vscode 가상환경에서 장고(Django) 프로젝트 시작하기 (2) | 2022.09.28 |