Python 在满足其他两个条件的表中插入
在我的程序中,教师用户创建一个类并将其添加到数据库中。然后,他们输入学生的全名,并在数据库中对其进行拆分和搜索。如果找到,将在学生行中插入类名。我在将类名插入到first和lastname的值与老师输入的值相同的位置时遇到问题 这是为用户创建表的代码:Python 在满足其他两个条件的表中插入,python,sqlite,Python,Sqlite,在我的程序中,教师用户创建一个类并将其添加到数据库中。然后,他们输入学生的全名,并在数据库中对其进行拆分和搜索。如果找到,将在学生行中插入类名。我在将类名插入到first和lastname的值与老师输入的值相同的位置时遇到问题 这是为用户创建表的代码: c.execute("""CREATE TABLE IF NOT EXISTS users ( UserID text PRIMARY KEY, FName text, SN
c.execute("""CREATE TABLE IF NOT EXISTS users (
UserID text PRIMARY KEY,
FName text,
SName text,
username text,
password varchar,
userType text,
ClassName text,
FOREIGN KEY ("ClassName") REFERENCES "ClassInfo"("ClassName"));""")
这是用于将学生的类名插入表中的代码。它一直工作到我尝试插入的最后一个命令
studentname = (var_studname.get())
conn = sqlite3.connect('MyComputerScience.db')
print (studentname)
c = conn.cursor()
firstName, lastName = studentname.split(" ")
c.execute ("SELECT * FROM users WHERE FName = ? AND SName= ? AND usertype = 'Student'", (firstName, lastName,))
results = c.fetchall()
if len(results) == 0:
Label(screen6, text = "Student doesn't exist!", fg="RED").place(relx=0.101, rely=0.725, height=21, width=194)
else:
Label(screen6, text = ""+firstName+" Added!", fg="Green").place(relx=0.101, rely=0.725, height=21, width=194)
var_inserttoclass = (var_classname.get(), firstName, lastName, )
c.execute('insert INTO users (ClassID) WHERE FName = ? AND SName= ? VALUES (?,?,?);', var_inserttoclass)
conn.commit()
这是我得到的错误:
c.execute('insert INTO users (ClassID) WHERE FName = ? AND SName= ? VALUES (?,?,?);', var_inserttoclass)
sqlite3.OperationalError: near "WHERE": syntax error
您不需要
INSERT
语句,而是UPDATE
:
UPDATE users SET ClassName = ? WHERE FName = ? AND SName= ?;
什么是ClassID?如果已经找到该学生,为什么要插入另一行?不仅如此,要插入的列列表只是一个列,而且值列表包含三个SQL参数。该查询还总共有5个SQL参数(
?
),但元组中只有3个值。这就是不合情理。