从端口读取Python代码并将其存储在db中时出现错误:#1062,主键的重复条目1
使用pyserial,我从插入USB端口的传感器获取数据。我正试图使用MYSQLdb将这些数据存储到数据库中从端口读取Python代码并将其存储在db中时出现错误:#1062,主键的重复条目1,python,mysql,mysql-python,Python,Mysql,Mysql Python,使用pyserial,我从插入USB端口的传感器获取数据。我正试图使用MYSQLdb将这些数据存储到数据库中 cur = db.cursor() cur.execute("TRUNCATE TABLE randomdata;") if ser.isOpen(): try: i = 1 while 1: num = str(1) readserial = ser.readline()
cur = db.cursor()
cur.execute("TRUNCATE TABLE randomdata;")
if ser.isOpen():
try:
i = 1
while 1:
num = str(1)
readserial = ser.readline()
print readserial
query="INSERT INTO randomdata(id,randomString)VALUES("+num+",'"+readserial+"');"
cur.execute(query)
db.commit()
i+=1
time.sleep(2)
if (i >= 50):
break
ser.close()
except Exception, e1:
print "error communicating...: " + str(e1)
else:
print "cannot open serial port "
在显示错误消息之前,它将在数据库中存储一个值:“错误通信…”(1062,“键“PRIMARY”的重复条目“1”)
任何帮助都将不胜感激。同一id的值不能插入两次 这里您的id每次都是“1” 如果希望始终保持相同的id(从而只保留一个值),则需要使用UPDATE而不是INSERT,具体取决于您要执行的操作。类似的(未经测试): 或者,您希望每次存储所有值并插入新条目,然后每次都需要生成一个新id(通过在while循环中使用
i
而不是1
)
这意味着num总是1
query="INSERT INTO randomdata(id,randomString)VALUES("+num+",'"+readserial+"');"
每次插入1(即num
作为主键的ID)。然后,你得到了错误
你为什么不这样使用i
:
num = str(i)
由于您增加了
i
,ID将不会重复。这意味着您在DB表中已经有此键,因此无法添加它。完全错过了该键,意味着将i放在那里。。。谢谢
query="INSERT INTO randomdata(id,randomString)VALUES("+num+",'"+readserial+"');"
num = str(i)