소켓 통신으로 체온을 넘겨주면 캡스톤 대회 준비 중 필요한 기능으로
QR코드로 학과, 학번, 이름을 DB에 저장한뒤에 그 다음 체온을 재서 소켓통신을 활용해 온도를 넘겨 받은 후에 그것을 mysql 서버에 저장할 것이다.
원하는 위치에 대한 update 기능이 필요하여서 구현해보게 됐다.
간단하게 python 을 이용해서 text 파일의 내용을 읽어드린 후 그것을 실시간으로 계속 받아와야 하기에
while문 안에서 if문을 통해 조건을 부여받고 같은 체온이면 저장하지 않고,
그 다음 사람의 체온이 받아질 때 까지 text file만 읽고 있다가 변화하면 저장하는 형식으로 구현해보았다.
먼저 QR을 통해 데이터베이스에 사용자를 추가하게되면 id값이 부여되고 학번, 이름, 학과, 시간 의 데이터가 들어간다.
그에 맞는 id 값에다 온도를 업데이트하여 수정한다.
이 글에서는 id값에 맞게 받아 온 온도를 수정했지만 코드를 조금 수정하여 학생마다의 고유숫자인 학번을 통해서 업데이트 할 것이다. ★★★★
1. 먼저 큐알코드 스캔을 한 모습이다. (같은 큐알코드 두번찍음, id값 다름)
2. python 코드를 이용해서 NULL로 비어있는 temperature 값을 update 해준다.
소켓통신하여 들어온 값은 36.2111 이고 python 코드 실행결과 위와같이 update 된 모습을 볼 수 있다.
3. 그 다음 사용자가 체온을 잰다면 메모장의 값이 변화 할 것이다. 변화한 값에 대한 update된 모습
소켓통신하는 코드에 다음과 같은 코드를 추가해 수정해주면 될 것 같다.
< mysql_update.py >
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='qwe123',
db='capston', charset='utf8')
textfile = 'C:/Users/junseop/Desktop/CAPSTON/temperature.txt'
id = 28
copy = 0
curs = conn.cursor()
while True:
f = open(textfile, 'r', encoding="utf-8" )
s = f.read()
f.close()
if(copy != s):
copy = s
sql = """update topic set userTemperature = %s
where id = %s"""
curs.execute(sql,(s,id))
print('id %d의 사용자 체온이 추가되었습니다.'%id)
conn.commit()
id = id + 1
conn.close()
python 메모장 소켓통신 : seopseop911.tistory.com/26
QR스캔 리더기 : seopseop911.tistory.com/38
참고글 :
python으로 mysql하기 pythonstudy.xyz/python/article/203-MySQL-DML
'Socket' 카테고리의 다른 글
소켓통신으로 실시간 메모장 데이터 보내기 (python) (2) | 2020.07.29 |
---|---|
라즈베리파이 C - Android (0) | 2020.03.02 |
C (win) - Android (6) | 2020.03.02 |
라즈베리파이 (python) - android (0) | 2020.02.24 |
라즈베리파이(리눅스) - win <C 언어> (0) | 2020.02.24 |