如何在mysql中保存传感器数据?

时间:2018-03-12 12:32:47

标签: python mysql bluetooth phpmyadmin arduino

我的树莓派通过蓝牙从arduino接收传感器数据。我想在mysql中保存传感器数据。这是使用python的代码

#! /usr/bin/python
import bluetooth
import MySQLdb

bd_addr="(Mac address)"
port=1
sock=bluetooth.BluetoothSocket(bluetooth.RFOMM)
sock.connect((bd_addr.port)))
data=""

db=MySQLdb.connect("localhost", "user", "pwd", "db")
curs=db.cursor()
while 1:
  try:
      data +=sock.recv(1024)
      data_end=data.fint('\n')
      if data_end!=-1:
        rec=data[:data_end+1:]
        print data
        data=data[data_end+1]
        strQuery="INSERT INTO table (kg) VALUES ('+data')"
        curs.execute(strQuery)
        db.commit()
  except KeyboardInterrupt:
    break
sock.close()
db.close()

当我运行此代码时,我可以正确读取传感器数据,但是在mysql中 保存不同的数据。 如果我插入localhost / phpmyadmin并仅检查我的数据库' 0'是存在的。这是我的终端。我的问题是什么?

11.70
mysql.py:25: Warning: Incorrect doubl value: '+data' for column 'kg' at row 1 curs.execute(strQuery)
11.78
11.72

1 个答案:

答案 0 :(得分:1)

您的Python应用程序将SQL语句INSERT INTO table (kg) VALUES ('+data')发送到您的数据库,数据库将尝试将字符串+data写入kg列。

你们想要做什么:

strQuery="INSERT INTO table (kg) VALUES (" + str(data) + ")"
curs.execute(strQuery)

更好:

strQuery="INSERT INTO table (kg) VALUES ({})".format( data )
curs.execute(strQuery)

或者如果你想使用sql绑定:

strQuery="INSERT INTO table (kg) VALUES (?)"
curs.execute(strQuery, (data,)) # here you pass the value(s) as iterable parameter