Files
student_manage_system/StatCalc/dao/statcalc_dao.py
T

62 lines
1.8 KiB
Python

from pygments.lexers import sql
from sentry_sdk.integrations import sqlalchemy
from StatCalc.schema.statcalc_request import *
from fastapi import HTTPException
from sqlalchemy import *
from students.model.students_model import Students
def get_age_30(db):
q = db.query(Students).filter(Students.age>=30).all()
return q
from class_management.model.class_management_model import ClassInfo
def get_class_count(g , db):
if g == "班级人数":
q = (db.query(ClassInfo.id,ClassInfo.name,func.count(ClassInfo.id) )
.join(Students,Students.class_id==ClassInfo.id)
.group_by(ClassInfo.id,ClassInfo.name,Students.sex)
.all())
elif g == "男女人数":
q = (db.query(Students.sex,func.count(ClassInfo.id) )
.join(Students,Students.class_id==ClassInfo.id)
.group_by(Students.sex)
.all())
elif g == "班级中男女人数":
q = (db.query(ClassInfo.id,ClassInfo.name,Students.sex,func.count(ClassInfo.id) )
.join(Students,Students.class_id==ClassInfo.id)
.group_by(ClassInfo.id,ClassInfo.name,Students.sex)
.all())
else:
return False
return q
from scores.model.score_model import Score
def get_score_80(db):
sq = ( db.query(Students.id)
.join(Score, Score.sid == Students.id)
.filer(Score.score < 80 )
.group_by(Students.id)
.having(func.count(Score.id) > 2 )
.sq()
)
q = ( db.query(Students.name,ClassInfo.name,Score.score )
.join(ClassInfo, ClassInfo.id == Students.class_id)
.join(Score, Score.sid == Students.id)
.filer(Students.id.in_(sq),Score.score < 80)
.all()
)
return q