시작
이번 프로젝트에서 저희는 python 코드를 이용한 글과 댓글의 감정 분석 사이트를 제작할 것입니다. python으로 된 코드를 서버에 올리기 위해 Django를 사용할 것입니다.
Django project
우선 가상환경을 만들고, django를 설치합니다.
python3 -m venv venv_ev
source venv_ev/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install django~=2.0.0
이후 project를 만들고, 안에 app 하나를 만듭니다. 현재 목표는 blog 형태와 같이 글 쓰기와 Database에 저장이 가능한 사이트를 목표로 하고 있으므로, 우선 블로그 기능을 구현할 app을 만듭니다.
django-admin startproject ev
python manage.py startapp blog
이 프로젝트에서는 MySQL DB를 사용하므로, django와 mysql 연동에 필요한 드라이버 모듈을 설치합니다.
sudo apt-get install libmysqlclient-dev
pip install mysqlclient
pip install pymysql
이제 settings.py
의 db 설정을 mysql로 바꾸어줍니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'ev',
'USER': 'root',
'PASSWORD' : '',
'HOST' : '127.0.0.1',
'PORT' : '3306',
}}
ev라는 이름의 databse를 미리 mysql에 설정해두었고, user는 root로 설정, 비밀번호는 알맞게 입력하면 됩니다. </br> 이제 변경 사항을 django에 적용해야합니다. manage.py가 있는 디렉토리로 돌아와 다음 명령을 실행합니다.
python manage.py migrate
실행시 제대로 되지 않고,
django.db.utils.OperationalError: (1698, "Access denied for user 'root'@'localhost'")
와 같은 에러가 발생하는 경우가 있습니다.
이 경우에는, db에 root가 아닌 user를 만들어 줌으로서 해결할 수 있습니다. mysql -u root -p
로 mysql 에 접속한 이후,
create user 'django'@'localhost' identified by '';
grant usage on *.* to 'django'@'localhost';
grant all privileges on ev.* to 'django'@'localhost';
와 같이 새로운 user를 만들고, 만들어 두었던 ev database의 권한을 줍니다.
이후, settings.py
의 user와 password 부분을 새롭게 만든 user로 설정하고, migration을 실행하면 성공적으로 실행되는 것을 확인할 수 있습니다.