티스토리 뷰
안녕하세요 :)
이번 포스팅에서는 장고와 mysql을 연동해보고 html 카테고리에서 호스팅했던 웹페이지를 살짝 건드려서 웹페이지에 데이터 베이스 테이블이 출력되는 결과를 확인해볼것입니다.
허허.. 이번에는 구글링 시간이 5시간 이상은 잡아 먹힌거 같아요 가상환경도 다시 시도해보고 mysql 클라이언트도 계속 다시 깔아보고 오류가 참 많이 났었어요 ㅎ 그래도 결과물은 나쁘지 않았네용
일단 지난 포스팅을 통해 우리는 django를 통한 웹페이지를 구축해봤습니다. 지난번에 이어서 이번에는 데이터 베이스를 연동해 보겠습니다.
데이터 베이스 연동을 위해서는 migrate라는 이전 작업이 필요한데 이때 사용되는 패키지가 mysqlclient입니다. 그런데 설치중에 특히 우분투 리눅스는 아래와 같은 에러가 나타납니다.
ERROR: Command errored out with exit status 1:
아주아주 애를 많이 먹었어요! 저의경우 여러 방법을 시도해 보았는데요 결국 관련 패키지들을 전부 다시 설치해주는 방법으로 해결했습니다.
sudo apt-get install libmysqlclient-dev -y
위의 라이브러리가 설치되어 있지 않은것이 가장큰 요인같았습니다.
연동후의 결과물은 다음과 같습니다.
이전에 사용하던 database를 그대로 사용했고연동 과정은 다음과 같습니다.
먼저 mysqlclient 라이브러리를 pip 명령을 통해 install합니다.
pip install mysqlclient
그다음은 manage.py 가 있는 디렉터리에서 my_settings.py 라는 파일을 하나 생성해주고 다음과 같이 편집합니다.
그리고 프로젝트 디렉터리 내의 settings.py 파일에 방금 만든 파일을 import 해주고 데이터베이스 관련 설정 탭을 아래와같이 편집합니다.
저처럼 주석처리를 해도 되고 sqllte를 쓰지 않을것이라면 아예 지워도 상관없습니다.
이제 ./manage.py 파일을 이용해서 migrate해줍니다. 그러면 장고 내의 db정보가 주루룩 mysql로 넘어가게 됩니다.
저의 경우 이미 해두어서 아래와 같은 화면이지만 처음에 하면 주루룩 명령창에 정보가 적힐것입니다.
그다음은 연결된 데이터베이스에서 사용할 테이블을 클래스로 따로 빼와 models.py에 선언해 주어야 하는데 이는 장고프레임워크의 ./manage.py inspectdb라는 좋은 디비 감지 명령을 이용하면됩니다.
그러면 아래처럼 주루룩 정보가 나오는데 제가 사용할 dataTBL 클래스가 보입니다. 이를 그대로 복붙해서 models.py에 넣어주면 됩니다.
이후에는 마이그레이션파일을 생성해줍니다. manage.py makemigrations
모든 준비는 끝났습니다. 이로서 연동은 끝났는데 어떻게 사용할까요? 저도 아직 db의 데이터를 select해오는 것밖에 할줄 모릅니다만
절차는 다음과 같습니다.
view.py 파일에 데이베이스의 테이블 클래스를 import 시킨후 다음과 같은 코드를 통해 데이터를 템플릿의 html 파일로 보냅니다
그리고 html에서는 다음과 같은 템플릿언어를 통해 리스트에 원하는 col값을 초기화 시켜 주었습니다.
'Language > Python3' 카테고리의 다른 글
python3 - Django 개발환경 구축 (1) | 2021.05.23 |
---|---|
Python3 - Todolist (GUI), use Database (1) | 2021.05.15 |
Python3 - todolist(text) demo (0) | 2021.05.14 |
Python3 - Todolist (test mode), use Database (0) | 2021.05.14 |
Python3 - Music playList (0) | 2021.05.12 |