在MySQL数据库中保存数据出现问题

3
我是一个帮助翻译文本的助手。
英译中:

我刚接触Python,正在尝试将从Arduino串口获取的数据保存到MySQL数据库中,但我只能保存一次,因为我必须再次运行程序才能保存,我尝试使用while循环,但我只能坚持一次保存到数据库,并且不断出现“无法从Arduino获取数据!”的错误信息。

这是我的代码:

import serial
import MySQLdb


dbConn = MySQLdb.connect("localhost","root","sasa","sms") or die ("could not connect to database")
cursor = dbConn.cursor()

device = 'COM3'

try:
  print "Trying...",device
  arduino = serial.Serial(device, 9600)
except:
  print "Failed to connect on",device


try:
  data = arduino.readline()
  pieces = data.split("\t")

  try:
    cursor.execute("INSERT INTO industrial (db) VALUES (%s)", (pieces[0]))
    dbConn.commit()
    cursor.close()
  except MySQLdb.IntegrityError:
    print "failed to insert data"
  finally:
    cursor.close()
except:
  print "Failed to get data from Arduino!"

它的目的是什么?Arduino是否不断推送数据,需要一直读取?有几种方法可以实现这一点。 - farbiondriven
1
我正在尝试获取声音传感器的值,并将接收到的数据放入数据库中,如果可能的话,需要一直进行。 - Lucks
1个回答

0
我明白了,其实很简单,我只需要在开头加上一个while True:,它就能正确更新了。如果有人感兴趣,这是代码:
import serial
import MySQLdb

while True:
    dbConn = MySQLdb.connect("localhost","root","sasa","sms") or die ("could not connect to database")
    cursor = dbConn.cursor()

    device = 'COM3'


    try:
      print "Trying...",device
      arduino = serial.Serial(device, 9600)
    except:
      print "Failed to connect on",device


    try:
      data = arduino.readline()
      pieces = data.split("\t")


      try:
        cursor.execute("INSERT INTO industrial (db) VALUES (%s)", pieces)
        dbConn.commit()
        cursor.close()
      except MySQLdb.IntegrityError:
        print "failed to insert data"
      finally:
        cursor.close()
    except:
      print "Failed to get data from Arduino!"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接