Compare commits

...
Author SHA1 Message Date
chen 60a72dd297 模块解释 2026-09-23 10:24:03 +08:00
chen 6515bd811c 模块解释 2026-09-22 22:07:46 +08:00
chen ff03df7d8d 统计 2026-09-22 21:03:15 +08:00
3 changed files with 66 additions and 4 deletions
+61
View File
@@ -0,0 +1,61 @@
#scores模块解释
##项目层
web框架:FastAPI(生成接口)
ORM:sqlalchemy
校验:MYSQL(通过PyMysql驱动)
运行:uvicorn,端口12346
用FastAPI显露HTTP接口 ,对MysQL的scores表进行一个增,删,改,查的动作,删除是软删除,
api是接口层,成绩信息的增加,删除,更新,查询
dao是数据操作层,查询get_scores_dao
更新add_scores_dao
增加update_scores_dao
删除delete_scores_dao
统计查询80分以上的get_top_students_dao
查询连续两次不及格的get_failing_students_dao
班级平均分get_class_avg_dao
model是数据库表模型层,字段信息 id *pk*
sid 链接学生表的学生ID
cid 链接班级表的班级ID
num 考试序次
score 考试成绩
t_subject 链接科目表的科目ID
create_date 创建数据的时间
update_date 更新数据的是时间
is_deleted 逻辑删除
deleted_date 删除的时间
schema是请求体和响应体模型层, 查询的ScoreQuery
更新,增加,删除的ScoreRequest
databases是数据库定义配置文件, 链接引擎对象db_url,链接地址engine,
建表的基类Base,数据库会话管理Session
会话实例def get_db()
main是主程序文件,将配置文件的接口导入,创建接口运行
+1 -1
View File
@@ -36,7 +36,7 @@ def get_failing_students_dao(db):
.subquery())
results = (db.query(
Students.sid,
Students.id,
Students.name,
ClassInfo.name.label("class_name"),
Score.num,
+4 -3
View File
@@ -1,7 +1,7 @@
from fastapi import FastAPI,APIRouter
from scores.api.score_api import score_api
from scores.database import engine,Base
from scores.api.score_api import score_api
from scores.api.statistic_api import statistic_api
# 合并接口
Scores_API = APIRouter()
@@ -9,11 +9,12 @@ Scores_API.include_router(score_api)
# 自测接口
app = FastAPI(tags=['成绩'], title='成绩管理系统')
app.include_router(score_api)
app.include_router(statistic_api)
if __name__ == '__main__':
app.include_router(score_api)
Base.metadata.create_all(engine)
import uvicorn