일단 django를 실행하기 위해서는 가상환경을 만들어야되는데 코드는 리눅스랑 윈도우가 다르다.
# 가상환경 만들기
python -m venv [가상환경 이름]
# 가상환경 activate
# window
cd [가상환경이름]/Scripts
activate
# linux
source [가상환경이름]/bin/activate
#가상환경 끄기
deactivate
일단 데이터베이스를 연결하기 전에 django project를 먼저 만들어보자.
django-admin startproject myproject
이렇게 터미널에 입력을 하면 아래의 형식으로 폴더와 파일들이 만들어진다.
C:.
└─myproject
│ manage.py
│
└─myproject
asgi.py
settings.py
urls.py
wsgi.py
__init__.py
새로운 app을 만들고 싶을때는 manage.py와 같은 루트의 경로에서
django-admin startapp myservice
터미널에 이렇게 입력하면
C:.
└─myproject
│ manage.py
│
├─myproject
│ asgi.py
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
│
└─myservice
│ admin.py
│ apps.py
│ models.py
│ tests.py
│ views.py
│ __init__.py
│
└─migrations
__init__.py
이런 식으로 myservice폴더와 기본적인 세팅이 완료된다.
일단 mysql을 사용하기 위해서는 mysql을 다운받아야 한다.
https://dev.mysql.com/downloads/windows/installer/8.0.html
기본옵션에 workbench를 다운받을 수 있도록 되어있는데, workbench로 생성할 예정이기 때문에 다운 받는 것이 좋다.
다운을 받았으면,
이런식으로 창이 뜰텐데, MySQL Connections에 +버튼을 눌러서 connection을 하나 추가해준다.
connection name, username과 필요하면 password를 입력하고 난 후에 Test Connection 버튼을 클릭했을 때,
이 창이 뜨면 연결이 완료 된 것이다. port는 왠만하면 바꾸지 않는것이 좋다. 혹시나 이미 사용하고 있는 port로 설정하는 경우에는 연결이 안되기 때문이다.
django project와 만들어놓은 MySQL connection을 연결해줘야 하는데, 이를 위한 작업은 setting.py에서 하면 된다.
# setting.py
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
...
아마 처음 project를 만들면 위의 코드처럼 sqlite3가 기본적인 database로 설정이 되어있을텐데 이거를 아래처럼 바꿔주기만 하면 된다.
# setting.py
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER' : 'sung',
'PASSWORD' : 'password', # 설정한 비밀번호로 적어주면 된다.
'HOST' : '127.0.0.1',
'PORT' : '3306',
}
}
...
일단 데이터베이스를 생성해야 하기 때문에 아래의 sql명령어를 통해서 데이터베이스를 생성할 수 있다.
create database mydatabase character set utf8mb4 collate utf8mb4_general_ci;
만약에 이런 오류가 발생한다면, user를 생성해서 권한을 부여하는 sql코드를 작성하면 된다.
create database mydatabase character set utf8mb4 collate utf8mb4_general_ci
Error Code: 1044. Access denied for user 'sung'@'localhost' to database 'mydatabase'
create user userid@localhost identified by '비밀번호';
grant all privileges on *.* to userid@localhost identified by '비밀번호';
이후에 django project로 이동해서 터미널에 입력을 하면 django에 필요한 다른 table을 알아서 mysql에 저장해준다.
python manage.py makemigration
python manage.py migrate
다음 프로젝트에서는 model을 만들고 serializer로 기본적인 api를 만들어보겠다.