提问者:小点点

python的mysql.connector中存在参数错误


一个关于SQL的错误刚刚出现在我的程序中,而我根本没有更改代码,它以前是工作的。 下面是给出错误的代码片段。 给出一些上下文,这是一个树莓pi系统的帮助下,RFID芯片记录出勤。

...
if cursor.rowcount >= 1:
      lcd.clear()
      lcd.message("Overwrite\nexisting user?")
      overwrite = input("Overwite (Y/N)? ")
      if overwrite[0] == 'Y' or overwrite[0] == 'y':
        lcd.clear()
        lcd.message("Overwriting user.")
        time.sleep(1)
        sql_insert = "UPDATE users SET name, room = %s WHERE rfid_uid=%s"
      else:
        continue;
else:
    sql_insert = "INSERT INTO users (name, room, rfid_uid) VALUES (%s, %s, %s)"
lcd.clear()
        
lcd.message('Enter new name')
new_name = input("Name: ")
lcd.clear()
        
lcd.message('Enter room number')
new_room = input("Room: ")
lcd.clear()

####this line below gives error
cursor.execute(sql_insert, (new_name, new_room, id))

db.commit()
...

下面是我得到的一个错误:

Traceback (most recent call last):
  File "/home/pi/checkinsystem/ra.py", line 67, in <module>
    cursor.execute(sql_insert, (new_name, new_room, id))
  File "/usr/local/lib/python3.7/dist-packages/mysql/connector/cursor.py", line 561, in execute
    "Not all parameters were used in the SQL statement")
mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement

我已经尝试了一些轻微的语法修改,但是考虑到它以前工作得很好,我现在还是一无所知。 有什么建议如何解决这个问题吗?


共1个答案

匿名用户

嗨,我想我以前也和你有过同样的问题。 试试这个

else:
    n = input('Enter new name')
    lcd.clear()
    r = input('Enter room number')
    lcd.clear()
    sql_insert = "INSERT INTO users (name, room, rfid_uid) VALUES ("+n+","+r+","+rfid_uid+")"
    lcd.clear()
    cursor.execute(sql_insert)
    db.commmit()

我真的希望这能有所帮助,或者也许需要一点点调整。