SQLite/Python相同的变量名和列名问题
因此,我正试图通过建立一个简单的数据库来解决如何将SQLLite与python结合使用的问题,该数据库中包含了不同的学生、他们的课程作业和分数等等。。。。 我正在写一个函数来更新我的数据库,根据学生的id、单元id和分数来更新我的数据库。但是,我的作业表中有一列名为mark 这就是我认为有效的方法SQLite/Python相同的变量名和列名问题,python,sqlite,Python,Sqlite,因此,我正试图通过建立一个简单的数据库来解决如何将SQLLite与python结合使用的问题,该数据库中包含了不同的学生、他们的课程作业和分数等等。。。。 我正在写一个函数来更新我的数据库,根据学生的id、单元id和分数来更新我的数据库。但是,我的作业表中有一列名为mark 这就是我认为有效的方法 def mark_assignment(database, studentid, assessmentid, mark): mark = score access_databa
def mark_assignment(database, studentid, assessmentid, mark):
mark = score
access_database(database,"UPDATE assignments SET mark = score, marked = 1 WHERE assignments.studentid = studentid AND assignments.assessmentid = assessmentid ")
您所要做的就是在执行时在SQL行中添加占位符 str.format()是Python3中的字符串格式化方法之一,它 允许多个替换和值格式设置。这种方法让 us通过位置格式连接字符串中的元素。 格式函数中的每个参数都将替换字符串中相应的占位符。 下面是一个小例子:
#Code
first_name = "Heeth"
last_name = "Jain"
print("Hello {} {}".format(first_name, last_name))
#Output
Hello Heeth Jain
SQL语句如下所示:
"UPDATE assignments SET mark = {}, marked = 1 WHERE assignments.studentid = {} AND assignments.assessmentid = {}".format(mark, studentid, assessmentid)
由于您在该命令中使用的是单个表,因此您还可以按如下方式更改语句(我刚刚将作业.studentid更改为studentid,依此类推:
"UPDATE assignments SET mark = {}, marked = 1 WHERE studentid = {} AND assessmentid = {}".format(mark, studentid, assessmentid)
所以最后,在改变之后,应该是这样的:
def mark_assignment(database, studentid, assessmentid, mark):
statement = "UPDATE assignments SET mark = {}, marked = 1 WHERE studentid = {} AND assessmentid = {}".format(mark, studentid, assessmentid)
access_database(database, statement)
注意:
在现实生活中,使用str.format()是一个坏主意,因为它可能会被SQL注入误用。但是,由于我们只知道这个函数,而不知道整个代码,格式化在这里会有所帮助。在这些情况下,添加像?这样的占位符是更好的选择。参考: