- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 백준
- 자바
- android studio
- oauth
- 로그인
- 구글 로그인
- 배열
- 안드로이드 스튜디오
- 연결리스트
- C++
- 자료구조
- 컴퓨터공학과
- 동적할당
- 코딩테스트
- python
- Firebase
- 안드로이드
- 비주얼 베이직
- 파이썬
- 정렬
- 알고리즘
- firebase google
- til
- 프로그래밍 입문
- 프로그래머스
- Java
- 공유대학
- C언어
- sql
코딩하는 해달이
[Android Studio] OKHTTP3와 flask를 이용해 DB에 데이터 전송하기 3 본문
Version & 참고 링크
Version
-운영체제 : Window 10
-PYTHON : python 3.10.6 64-bit
-Visual Studio Code : Visual Studio Code 1.70.1(user setup)
-Android Studio : android-studio-2021.2.1.15-windows
-MySQL : 8.0.29
이 글은 아래의 링크를 바탕으로 작성한 글입니다.
(제가 이해한 대로 글을 쓴 것이므로 틀린 내용이 있을 수도 있습니다.)
https://joyfulbean.tistory.com/114
https://square.github.io/okhttp/
https://stickode.tistory.com/41
https://hgusight.github.io/study/app/android/
https://gun0912.tistory.com/80 // 안드로이드 스튜디오 에러 해결 "CLEARTEXT communication to XXXX not permitted by network security policy"
https://ninano1109.tistory.com/135
https://stackoverflow.com/questions/47957433/sql-typeerror-cant-concat-tuple-to-bytes // flask sql문 에러
"can't concat tuple to bytes"
https://stackoverflow.com/questions/19238781/python-mysql-typeerror-execute-takes-from-2-to-4-positional-arguments-but-5-w // flask sql문 에러
"Cursor.execute() takes from 2 to 3 positional arguments but 5 were given"
저번 포스팅에서 DB 생성부터 안드로이드 스튜디오의 데이터를 웹 서버로 보내는 작업까지 마무리를 했는데요.
[Android Studio] OKHTTP3와 flask를 이용해 DB에 데이터 전송하기 1
이번 포스팅에서는 요청받은 데이터를 DB에 저장하는 코드를 짜봅시다.
코드는 [서버 실행, DB연결, 데이터 처리, 데이터 요청] 이렇게 4가지 파일로 나누어서 프로젝트 단위로 만들어보겠습니다.
이렇게 파일을 나누는 이유는 나중에 서버에서 할 일이 점점 많아 질 경우에 코드의 가독성을 위해서 나누어 주었습니다.
언어는 python 을 사용하고 python의 flask 모듈을 이용하겠습니다.
개발 도구는 VSCode를 이용하겠습니다.
먼저 flask 개발 환경을 설정해주어야하는데, 혹시 개발 환경 설정을 안하셨다면, 아래에 링크를 통해 설정해주시면 될 것 같습니다.
파이썬 - flask 웹 서버 환경 구축 (env, 가상 환경)
설정을 완료했다면, flask와 db를 연결해주는 python파일을 만들어줍시다.
파일이름은 임의로 설정해주면 됩니다. (저는 dbConnect.py라고 지어주었습니다.)
아래는 dbConnect.py의 코드입니다.
# vim dbConnect.py
import pymysql
def dbcon():
conn = pymysql.connect(host='127.0.0.1', user='root', password='비밀번호', db='DB이름', charset='utf8')
# mysql 연결
if conn.open: # DB 연결 여부 확인
print('connected')
return conn
def dbclose(conn):
conn.close() # DB 연결 해제
다음은 서버를 실행하는 파일을 만들어보겠습니다.
저는 파일 이름을 runserver.py라고 지었습니다.
#vim runserver.py
from flask import Flask
from app import app
if __name__ == "__main__":
app.run(host='0.0.0.0', port='5000', debug=True)
# port : 웹서버를 5000포트에서 실행하겠다는 설정
이제 데이터를 받아오는 작업과 DB에 추가하는 작업이 남았는데, 데이터를 받아오는 작업부터 해봅시다.
파일을 하나 더 만들어주고, 이름은 임의로 지어줍시다. (저는 app.py라고 지었습니다.)
#vim app.py
from flask import Flask, json, request
from models import sendData
app = Flask(__name__)
@app.route('/sendserver', methods=['POST','GET'])
# http://ip:5000/sendserver 주소가 호출되면 아래의 함수를 실행 (ip : 자신의 서버 ip)
def toDB(): # DB에 저장
id = request.json['userID'] # json형태의 키값중 'userID'의 값을 리턴
password = request.json['userPassword'] # json형태의 키값중 'userPassword'의 값을 리턴
name = request.json['userName'] # json형태의 키값중 'userName'의 값을 리턴
# request.json['key'] : 요청받은 json데이터에서 원하는 key의 값을 가져오는 메소드
sendData.sendtodb(id,password,name) # models.py의 sendData클래스 내의 sendtodb함수 실행
return "Success"
이제 거의 다 왔습니다. DB에 추가하는 파일을 만들어줍시다. models.py입니다.
(이 파일 역시 임의대로 이름을 지어주시면 됩니다.
# vim models.py
import pymysql
from dbConnect import dbcon, dbclose
class sendData():
def sendtodb(id,password,name):
conn = dbcon() # db연결 함수
data = (id,password,name)
# 데이터 튜플형식으로 변경
curdic = conn.cursor() # sql문을 입력할 cursor 생성
sql = "INSERT INTO posttbl VALUES(%s,%s,%s)" # sql문
curdic.execute(sql, data) # sql문 실행
conn.commit() # 수정사항 반영
dbclose(conn) # DB 연결 해제
return print("sendtodb OK")
이렇게 파일을 다 만들어 준 후 VSCode 터미널에서 아래 코드로 가상환경을 실행시켜 줍니다.
(이미 실행중이라면 안해도 됩니다.)
env\Scripts\activate.bat
그 후에 앱 실행 파일을 실행시켜주는 명령어를 입력해서 서버를 실행시켜줍시다.
python runserver.py
이렇게 나온다면 정상적으로 실행이 된겁니다.
이제 안드로이드 스튜디오로 가서 데이터를 전송해봅시다.
폼에서 전송을 누르고 VSCode에서 아래처럼 로그가 떴다면 MySQL의 테이블의 데이터를 봅시다.
MySQL Commend 창을 켜주세요. 아래 코드를 입력해서 DB의 내용을 확인해 봅시다.
(bbs는 DB이름이고, users는 테이블 이름 입니다.)
이렇게 안드로이드 스튜디오 → flask 서버 → MySQL까지 데이터를 전송하는 방법에 대해서 공부해보았습니다.
아무것도 모르고 시작했을 땐 어떤것부터 해야할 지 갈피를 못잡았었는데, 데이터 흐름을 어느정도 이해하니 길이 보였습니다. 내가 앱에서 입력한 데이터가 DB에서 튀어나오니 나름 재미있기도 했습니다.
'개인 공부 > Android Studio' 카테고리의 다른 글
[Android Studio] Firebase 구글 로그인 구현하기 2 (0) | 2022.10.01 |
---|---|
[Android Studio] Firebase 구글 로그인 구현하기 (0) | 2022.10.01 |
[Android Studio] OKHTTP3와 flask를 이용해 DB에 데이터 전송하기 2 (0) | 2022.09.07 |
[Android Studio] OKHTTP3와 flask를 이용해 DB에 데이터 전송하기 1 (2) | 2022.09.07 |
[Android Studio] SHA1 키 확인하기 (1) | 2022.08.28 |