一个关于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
我已经尝试了一些轻微的语法修改,但是考虑到它以前工作得很好,我现在还是一无所知。 有什么建议如何解决这个问题吗?
嗨,我想我以前也和你有过同样的问题。 试试这个
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()
我真的希望这能有所帮助,或者也许需要一点点调整。