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

时间:2015-01-22 22:18:33

标签: python tuples subset

我的代码执行查询:

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])

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

select count(studentId) as number_of_students from students

select studentId from students order by avgGrade desc limit 10

这样你就可以避免下载所有的studentid,以防它是一个很长的列表。