SQLite3.操作错误:接近"<":语法错误:python格式中的sql有问题?



我正在为Comp Sci专业的最后一门课程做软件工程项目,当我试图在将我的方法与队友的GUI合并之前对方法进行数据/单元测试时,我对这个特定的错误感到宿醉。任何能帮助我解决这个问题的人都是我的英雄

class Student:
def __init__(self, StudentID, StudentName, conn: sql.Connection, curs: sql.Cursor):
self.StudentID = StudentID
self.StudentName = StudentName
def addStudent(self, curs: sql.Cursor):
query = f"""INSERT INTO Student
(StudentID, StudentName)
VALUES ({self.StudentID},{self.StudentName})"""
curs.execute(query)

如前所述,请考虑参数化。现在,在VALUES子句中,您的字符串格式不会将潜在的字符串值用单引号括起来。参数化涉及到准备好的SQL语句中的占位符和执行调用中的绑定值,您不需要担心这样的引号。

def addStudent(self, curs: sql.Cursor):
# PREPARED STATEMENT (NO VARIABLES)
query = """INSERT INTO Student (StudentID, StudentName)
VALUES (?, ?)
"""
# EXECUTE BY BINDING PARAMS
curs.execute(query, [self.StudentID, self.StudentName])

上面假设您使用的是sqlite3DB-API,它使用qmark占位符?。大多数其他Python DB API使用%s作为占位符(不要与过时的字符串模格式符号混淆(。

最新更新