본문 바로가기
모바일앱 프로젝트

Django + Android + MySQL (1)

by Nicole 2021. 2. 23.

1) 앱 사진 촬영 - db저장 - django 딥러닝 코드에서 처리 - db로 전송 - 앱 프론트에 뿌리기

 

2) 앱 사진 촬영 - django 딥러닝 이미지 처리 - 앱 프론트 - db 최종 이미지 저장

 

 

일단 내 앱에서는 연동이 위의 두 가지로 가능할 것 같은데 굳이 계속해서 DB를 거쳐갈 필요가 없다면,

예를 들어서 소켓 프로그래밍을 하는 것 처럼 django 와 android 앱이 직접적으로 이미지 데이터를 주고 받을 수 있다면 처리된 이미지를 안드로이드 앱에서만 DB 에 저장해주면 될 것이다.

그 방향이 구현이 덜 복잡하지 않을까 생각하여 오늘은 2) 안으로 연동을 해보려고 한다.

 

 

____________________________________________________________________________________________________________________

조사를 해 보던 중 알게 된 사실

(서버 프로그래밍에 익숙하지 않아서 잘 몰랐었는데, 웹 개발 할 때랑 네트워크 수업 때 배운거와 아예 연관이 없는 것 같지 않다..! 가즈아)

 

이미지 데이터는 어차피 폴더 안에 받아올 거니까 JSON 형식 안에 주소 값으로 보낸다.

{

        ...

        "image" : "http://localhost:8000/folder_1/image.png"

}

이런식으로 

 

그리고 매번 새로 모바일 앱에서 보내는 이미지는 그 folder_1에 같은 이름으로 들어가게 해서 새로운 이미지가 들어올 때 마다 이전 이미지가 삭제되도록 한다.

유저가 많은 경우에는 그 이미지 하나를 바로 지우지 않는 것 마저 큰 defect가 되겠지만, 일단 기능 구현에 중점을 두고 있다.

 

근데 그렇게 처리된 이미지를 안드로이드에서 따로 카피해서 저장하는게 가능할까?

 

재정립한 구현 순서는 다음과 같다.

1) django + android + db 연동하고 간단한 json 주고 받아보기

2) 이미지를 바이너리화 해서 주고 받든, json으로 주고 받든 이미지 transfer 구현하기

 

________________________________________________________________________________________________________________________

1) 번 진행 과정

아래 두 reference 를 참고하여 진행할 예정이다.

우선 어제 만들어둔 가상환경에 들어간다

cmd에 workon을 타이핑해보면 현재 가상환경 리스트가 나오는데

workon name_virtualenvironment 를 쳐주면 가상환경을 activate 할 수 있다.

가상환경 내에서 장고 restapi 를 install 해주려고 한다.

 

A. 장고 restframework install

pip install djangorestframework

아마 어제 설치한 장고 패키지에 대부분이 겹쳤던 것 같다.

B. settings.py 의 INSTALLED_APPS 에 restframework를 더해준다.

C. MySQL 설치

x86에 32bit 라고 쓰여 있어서 찾아보니, 64bit 환경에서도 잘 돌아간다고 한다.

dev.mysql.com/downloads/installer/

account는 따로 만들지 않고 아래에 깨알처럼 쓰여있는 'no thanks, ' 를 누르고 다운로드를 시작한다.

그런데 보니까 내 랩탑에 Visual studio 2019 c++ 인가 파일이 없어서 여러 패키지들이 install 될 수 없다고 나왔다.

그래서 execute 옵션을 누르고 next를 하니까 나머지는 자동으로 install 옵션에 들어갔다. 이 부분을 놓치면 안 될 것 같으니 주의하자.

workbench, router 같은 옵션들이 제외될 뻔 했다.

설치 목록에 execute 클릭하기
설치 이후에는 모두 default 설정이 되어 있는대로 진행했다. 포트는 저런 식으로 기본 세팅 되어 있다.

고대로 계속 execute > next > execute > next 과정을 반복하고 최종으로 workbench와 shell 이 뜨면 successfully installed 된 것이다!

저 화살표 부분을 클릭하면 쿼리를 칠 수 있는 창이 뜬다.

 

샘플 쿼리 사용

- MySQL 을 명령 프롬프트에서 사용하는 커맨드는 다음과 같다.

mysql -u [계정] -p [데이터베이스]

하지만 계정을 따로 안만들었거나, 최상위 계정으로 접속하려면 root를 쓰면 된다.

mysql -u root -p

 

돌려보니 안 된다. 찾아보니 환경변수에 따로 MySQL 서버 경로를 추가해 줘야 한다.

제어판 - 시스템 보안 - 시스템 - 고급 설정 - 환경 변수 - 시스템 환경변수에 추가해준다.
cmd 창을 새로 열어서 해보면 정상 작동 된다.

 

D. MySQL DB 생성

아래와 같이 외부 접속이 가능하도록 지정해준다고 한다. 아직은 왜 필요한 과정인지는 모르겠다. 알게 되면 추가하겠다.

쿼리 순서대로 계정 생성, 모든 권한 부여, 갱신

외부 ip를 사용해서 접근할 수 있도록 (?) 하기 위해서 settings.py 파일의 ALLOWED__HOSTS = [ ] 에 'localhost'~ '외부  ip' 까지 추가 해준다. 외부 ip는 cmd 창에 ipconfig을 쳤을 때 나오는 IPv4 주소에 해당한다.

settings.py 파일에 접근 허용 주소 추가
데이터베이스 생성
mysqlclient 를 설치해서 연동.

사실 파이참에서 Tools 옵션을 통해서도 실행할 수 있는데, 내 파이참에서는 뜨지 않아서 (아마 애초에 파이참과 연동하지 않아서 그런 것 같다.)

그래서 커맨드에서 내 장고 가상환경을 열고 

python manage.py startapp 생성할_앱_이름

으로 새로운 앱을 만들어줬다.

app을 새로 만들어주었다.
이런 식으로 파일이 생성된다.
그리고 settings.py 파일에 bg_removal 을 installed apps에 추가해준다.
그리고 커맨드든 파이참 터미널이든 작업 중인 가상환경 내에서 migration을 해준다. 그럼 위와 같이 모델이 생성된다.
아까 만들었던 bg_removal 데이터베이스에 연동하는 작업
migration 도 잊지 않고 해준다.
Workbench에 가서 확인해보면 제대로 연동된 것을 확인해 볼 수 있다.

 

 

REFERENCE

1. MySQL 설치 관련

parkdream.tistory.com/93

 

MySQL Community Server 8.0.15 설치

MySQL Community Server 8.0.15 설치 MySQL은 두 가지 버전으로 나뉩니다. 1. Enterprise 버전 2. Community 버전 엔터 프라이즈 버전은 라이선스가 필요합니다. 저는 커뮤니티 버전을 설치 해 봤습니다. MySQL Do..

parkdream.tistory.com

 

 

2. 파이썬 웹 서버 관련. 외부 접근 허용을 위한 고유 ip 등 관련 내용

wikidocs.net/35645

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

3.

docs.djangoproject.com/en/3.1/topics/db/models/

 

Models | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

duzi077.tistory.com/128?category=703147

 

[Django] Django REST Framework ( DRF ) 와 안드로이드 연동하기 - 1

Django 서버에서 REST framework를 설치하여 REST API를 만들고 안드로이드와 연동해보도록 하겠습니다. Django 프로젝트 생성, App 생성을 했다는 가정하에 시작하겠습니다. 저는 api 라는 App (사이트) 를

duzi077.tistory.com

cjh5414.github.io/django-rest-framework-imagefield/

 

Django REST Framework ImageField 이용하기

Jihun's Development Blog

cjh5414.github.io

 

'모바일앱 프로젝트' 카테고리의 다른 글

Django + Android + MySql (2)  (0) 2021.02.24
RESTful API 만들기  (0) 2021.02.23
깃허브에 작업 폴더 전체 저장하기  (0) 2021.02.22
윈도우 커맨드  (0) 2021.02.22
Django + Jupyter notebook + Deep learning  (0) 2021.02.22

댓글