Python 从元组中提取子集 sql 结果

Python extracting a subset from tuple that is sql result

我的代码执行查询:

cursor = connection.cursor()
cursor.execute("select studentId from students order by avgGrade desc")
ids = cursor.fetchall()

我 运行 所有学生所以我可以计算出有多少

numberOfStudents = len(ids)

那我希望只得到前10的对象, 如何更改此语句以处理 10 个而不是所有 id?

Students.objects.filter(studentid__in=[p[0] for p in ids])

您可以使用列表切片从 ids 列表中获取前 10 个元素。

Students.objects.filter(studentid__in=[p[0] for p in ids[:10]])

您也可以在两个 sql 查询中完成这两个任务

select count(studentId) as number_of_students from students

select studentId from students order by avgGrade desc limit 10

这样您就可以避免下载所有学生 ID,以防它是一个很长的列表。