Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从端口读取Python代码并将其存储在db中时出现错误:#1062,主键的重复条目1_Python_Mysql_Mysql Python - Fatal编程技术网

从端口读取Python代码并将其存储在db中时出现错误:#1062,主键的重复条目1

从端口读取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()

使用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()
            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)