파이썬으로 센서값을 strquery로 mysql에 저장하고 싶은데 터미널에서는 센서값이 출력되는데 mysql에는 '0'만 저장되는거 어떻게 해결할 수 있나요?
조회수 2422회
아두이노에서 측정한 센서값을 블루투스로 라즈베리파이에 전송하고 라즈베리파이는 파이썬으로 센서값을 받고 mysql에 저장하려 합니다. 질문과 같이 파이선 파일을 터미널에서 실행할 때 터미널에는 센서 값이 정상적으로 출력되지만 크롬에서 localhost/phpmyadmin 에 접속하여 저장된 데이터베이스를 확인하면 0밖에 저장이 되어있지 않습니다. 뭐가 문제일까요? 다음은 파이선 코드입니다.
import bluetooth
import MySQLdb
bd_addr="00:21:13:01:5B:65"
port=1
sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((bd_addr,port))
data=""
db=MySQLdb.connect("localhost", "root", "1234", "testdb")
curs=db.cursor()
print 'Start Monitor'
while 1:
try:
data +=sock.recv(1024)
data_end=data.find('\n')
if data_end!=-1:
rec=data[:data_end+1:]
print data
data=data[data_end+1:]
strQuery="INSERT INTO weight (kg) VALUES('+data')"
curs.execute(strQuery,)
db.commit()
except KeyboardInterrupt:
break
sock.close() db.close()
그리고 터미널에는 다음과 같이 에러가 떠요 ㅠㅠ
Warning: Incorrect double value: '+ data ' for column 'kg' at row 1 curs.execute(strQuery)
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
strQuery="INSERT INTO weight (kg) VALUES('+data')"
문자열이 제대로 닫히지 않았네요. " 로 열었다면 "로 닫아줘야합니다.
문자열 연결 연산자 + 도 하나 부족하구요.strQuery="INSERT INTO weight (kg) VALUES(" + data + ")"
위와 같이 수정하면 될 듯 합니다.
- colum count doesn't match value count at row 1이라는 에러가 뜨는데 무슨 에러인가요? ㅠㅠ 알 수 없는 사용자 2018.3.29 19:35
- 삽입 쿼리 확인 해 보세요. 삽입이 명시된 컬럼과 실제 넣는 데이터 갯수가 달라서 나는 에러 아닌가 싶네요 DaeSung Park 2018.3.29 21:47
댓글 입력