使用sqlite3更新python中的数据库错误
我试图执行一个通过表单更新数据库的函数,但遇到以下错误:使用sqlite3更新python中的数据库错误,python,sqlite,Python,Sqlite,我试图执行一个通过表单更新数据库的函数,但遇到以下错误:ValueError:operation参数必须是str 我对删除、读取或插入等其他功能没有问题,我不知道如何解决这个问题。 我写下了两个版本的函数更新和各自的错误 我正在尝试这个: def actualizaDatos(): Id1 = clave.get() nombre1 = nombre.get() password1 = password.get() apellido1 = apellido.ge
ValueError:operation参数必须是str
我对删除、读取或插入等其他功能没有问题,我不知道如何解决这个问题。
我写下了两个版本的函数更新和各自的错误
我正在尝试这个:
def actualizaDatos():
Id1 = clave.get()
nombre1 = nombre.get()
password1 = password.get()
apellido1 = apellido.get()
direccion1 = direccion.get()
comentarios1 = comentarios.get()
sentencia="UPDATE DATOSUSUARIOS SET ID= ?, NOMBRE_USUARIO = ?, PASSWORD = ?, APELLIDO = ?, DIRECCION = ?, COMENTARIOS = ? WHERE ID=?", [clave.get()]
miCursor.execute(sentencia, [Id1, nombre1, password1, apellido1, direccion1, comentarios1])
我希望数据库会更新,但出现以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\John\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "Practica_Guiada.py", line 148, in actualizaDatos
miCursor.execute(sentencia, [Id1,nombre1, password1, apellido1, direccion1, comentarios1])
ValueError: operation parameter must be str
在
判决的赋值结束时,您不需要[clave.get()]
。这是将变量设置为元组,而不是SQL字符串
miCursor.execute()
调用中也没有足够的参数。SQL中有7个?
,但参数列表中只有6个元素。您需要重复Id1
,因为它位于开头和结尾(但实际上,不需要设置ID
,因为您只需将它设置为它已经具有的相同值)
您正在将sentencia
设置为元组,因为在作业结束时有,[clave.get()]
。这是干什么用的?在cursor.execute()
中传递给数据库的一个查询参数不是字符串类型,尽管它是数据库所必需的。请查看表定义和传递给查询的实际值,并查看类型是否有效。@jnns这不是参数,而是查询字符串本身,它们出于某种原因将其转换为元组。SQLite没有针对primatives的任何类型强制执行,[clave.get()]
请将其从判决中删除,但是,为什么我必须将Id1参数放在最后一个位置?如果我说第一个不起作用。变量的顺序必须与查询中相应的?
相同<代码>其中ID=?
位于末尾。
def actualizaDatos():
Id1 = clave.get()
nombre1 = nombre.get()
password1 = password.get()
apellido1 = apellido.get()
direccion1 = direccion.get()
comentarios1 = comentarios.get()
sentencia="UPDATE DATOSUSUARIOS SET NOMBRE_USUARIO = ?, PASSWORD = ?, APELLIDO = ?, DIRECCION = ?, COMENTARIOS = ? WHERE ID=?"
miCursor.execute(sentencia, [nombre1, password1, apellido1, direccion1, comentarios1, Id1])