采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
请问老师,您最后一个练习里打印的好像只有语文成绩?如何将及格学生的所有成绩都打印出来呢?
这里是查学生信息,按照学生ID分组后取的第一条,所以只有一条成绩信息。
如果要查所有的成绩,可以在代码中再查一次,如下:
stmt
=
select(StudentGrade,
func.count().label(
'course_count'
)).where(StudentGrade.score >
60
)\
.group_by(StudentGrade.student_id)\
.having(func.count()
3
)
queryset
self
.session.execute(stmt).mappings().
all
()
for
item
in
queryset:
print
(item)
# 循环各科成绩
grade
item.StudentGrade.student.grade_list:
(grade)
或者是结合SQL中的GROUP_CONCAT函数将分数这一列拼接起来:如下:
),
func.group_concat(StudentGrade.score).label(
'course_all'
.where(StudentGrade.score >
这样打印是因为StudentGrade的__repr__返回 '{}-{}:{}'.format(self.student.stu_name,self.course.course_name,self.score),这里self.course.course_name,self.socre默认的就是语文吗?有没有可能实现只查StudentGrade就实现沈小姐-语文:,沈小姐-数学: ,沈小姐-英语: 这种输出?
你看给你的第一种解决方案
哦哦。我还是不太理解为什么grade_list里会有各科的成绩呢?而且还都是按照__repr__打印出来的。
零基础快速进阶,专为只懂Python语法的同学设计
1.1k 11
859 9
720 7
784 7
822 6
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号