Python 这有什么问题?(sqlite3)
这将返回以下错误:Python 这有什么问题?(sqlite3),python,sql,select,sqlite,operationalerror,Python,Sql,Select,Sqlite,Operationalerror,这将返回以下错误: recordCheck = c.execute("SELECT * FROM Student, Behaviour WHERE Forename=:oldForename, Surname=:oldSurname, YearGroup=:oldYearGroup, FormNumber=:oldFormNumber, Date=:oldDate, BehaviourType=:oldBehaviourType", {"oldForename":oldForename,
recordCheck = c.execute("SELECT * FROM Student, Behaviour WHERE Forename=:oldForename, Surname=:oldSurname, YearGroup=:oldYearGroup, FormNumber=:oldFormNumber, Date=:oldDate, BehaviourType=:oldBehaviourType", {"oldForename":oldForename, "oldSurname":oldSurname, "oldYearGroup":oldYearGroup, "oldFormNumber":oldFormNumber,"oldDate":oldDate,"oldBehaviourType":oldBehaviourType})
但我看不出有什么问题。有人能帮忙吗?使用
其中X=Y和Y=Z
而不是其中X=Y,Y=Z
OperationalError: near ",": syntax error
逗号在
where
子句中无效。条件通常由和
或或
分隔。因此,这是无效的:
recordCheck = c.execute("SELECT * FROM Student, Behaviour WHERE Forename=:oldForename AND Surname=:oldSurname AND YearGroup=:oldYearGroup AND FormNumber=:oldFormNumber AND Date=:oldDate AND BehaviourType=:oldBehaviourType", {"oldForename":oldForename, "oldSurname":oldSurname, "oldYearGroup":oldYearGroup, "oldFormNumber":oldFormNumber,"oldDate":oldDate,"oldBehaviourType":oldBehaviourType})
其中一项是有效的:
WHERE Forename=:oldForename, Surname=:oldSurname
您在WHERE子句中使用逗号,应该使用and。谢谢。但是,我已经修改了,但是在尝试运行时仍然收到相同的错误。有人能帮我吗?@Jambofun。您是否更改了所有逗号?已更新,相同错误:c.execute(“更新学生,行为集Forename=:newForename,姓氏=:newyearname,YearGroup=:newYearGroup,FormNumber=:newFormNumber,Date:=newDate,行为类型=:newBehaviourType其中Forename=:oldForename和姓氏=:oldForename和YearGroup=:oldForename和FormNumber=:oldFormNumber和Date=:oldDate”,{“newForename”:newForename,“newurname”“:newSurname,“newYearGroup”:newYearGroup,“newFormNumber”:newFormNumber,“newDate”:newDate,“oldForename”:oldForename,“old姓氏”:old姓氏,“oldYearGroup”:oldYearGroup,“oldFormNumber”:oldFormNumber,“oldDate”:oldDate})@Jambofun。这是一个完全不同的问题,因为它是一个
update
语句,而OP是一个select
语句。你应该问另一个问题。但是,SQLite不支持多表更新。
WHERE Forename=:oldForename AND Surname=:oldSurname
WHERE Forename=:oldForename OR Surname=:oldSurname