Python SQL查询没有选择我需要的带有“where”条件的数据
我试图从我的数据库中获取记录,其中studentID和lessonDate与特定结果相等。这个学生看起来很好,但lessonDate却不行。由于日期格式的原因,我将所有日期转换为字符串以放入数据库。我已经设置了数据库文件,所以字段是文本字段。我试图得到一个学生在某个特定日期进行的所有练习的课程名称和评分。数据库关系图: 我确信StudentID是正确的,因为我在这个函数的其他部分使用它。我确信日期是正确的,因为第4行中使用的“date”变量会导致写入文件的正确输出,并且我最初在SQL查询中将日期作为该变量,但它不起作用。我试着打印课程,其中该学生是外键,日期为“2016年8月10日”。我真的不知道为什么会这样。任何人的任何建议或假设都将不胜感激Python SQL查询没有选择我需要的带有“where”条件的数据,python,sqlite,Python,Sqlite,我试图从我的数据库中获取记录,其中studentID和lessonDate与特定结果相等。这个学生看起来很好,但lessonDate却不行。由于日期格式的原因,我将所有日期转换为字符串以放入数据库。我已经设置了数据库文件,所以字段是文本字段。我试图得到一个学生在某个特定日期进行的所有练习的课程名称和评分。数据库关系图: 我确信StudentID是正确的,因为我在这个函数的其他部分使用它。我确信日期是正确的,因为第4行中使用的“date”变量会导致写入文件的正确输出,并且我最初在SQL查询中将日期
template = ("{0:50}{1:50} \n")
print(lessonDateSet)
for date in list(lessonDateSet):
target.write("Lesson date: {} \n".format(date))
target.write("\n")
target.write(template.format("Exercise name:","rating:"))
self.cur.execute("""SELECT b.roadExerciseName, a.rating
FROM lessonExercises a LEFT JOIN roadExerciseInfo b ON a.roadExerciseID=b.roadExerciseID
LEFT JOIN lessons c ON c.lessonID=a.lessonID WHERE c.StudentID = {0} AND c.lessonDate = {1}""".format(studentInfo[0][0],"8-10-2016"))
fetch = self.cur.fetchall()
print(fetch, "fetch")
“fetch”是一个空列表。在这之后。
我仔细检查了我的数据。我的数据绝对正确。您的参数引用不正确 这就是为什么不应该使用字符串插值将数据添加到查询中。您应该使用db api的参数替换:
self.cur.execute("""SELECT b.roadExerciseName, a.rating
FROM lessonExercises a LEFT JOIN roadExerciseInfo b ON a.roadExerciseID=b.roadExerciseID
LEFT JOIN lessons c ON c.lessonID=a.lessonID
WHERE c.StudentID = ? AND c.lessonDate = ?""",
[studentInfo[0][0], "8-10-2016"])
没有正确引用您的参数 这就是为什么不应该使用字符串插值将数据添加到查询中。您应该使用db api的参数替换:
self.cur.execute("""SELECT b.roadExerciseName, a.rating
FROM lessonExercises a LEFT JOIN roadExerciseInfo b ON a.roadExerciseID=b.roadExerciseID
LEFT JOIN lessons c ON c.lessonID=a.lessonID
WHERE c.StudentID = ? AND c.lessonDate = ?""",
[studentInfo[0][0], "8-10-2016"])
两个建议:输出Python正在运行的实际查询,然后查看是否可以直接在SQLite上运行该查询。两个建议:输出Python正在运行的实际查询,然后查看是否可以直接在SQLite上运行该查询。