修改delete相关代码逻辑,新增README_students.md用来做模块解释。

This commit is contained in:
Orangeeee
2026-09-21 18:07:01 +08:00
parent e9507fef26
commit 3edce70bbb
5 changed files with 56 additions and 22 deletions
-2
View File
@@ -6,8 +6,6 @@ from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(app: FastAPI):
print("Base from databases:", Base)
print("Tables:", Base.metadata.tables.keys())
Base.metadata.create_all(engine1)
yield
engine1.dispose()
+26
View File
@@ -0,0 +1,26 @@
# students模块解释
## main:学生管理系统的主程序文件、测试接口
1. 下面所有配置文件的接口全部导入并建表
2. 创建fastapi接口并本地运行
## databases:链接数据库配置文件
1. 链接本地mysql,实例化mysql,创建引擎,创建基类,实例化数据库会话
2. 创建函数,调用数据库会话
## api.students_api:接口文件
1.
## dao.students_dao:数据筛选文件
1.
## model.students_model:数据库建表文件
1.
## schema.students_request:请求体、数据过滤
1.
+3 -5
View File
@@ -51,13 +51,11 @@ def get_students( stu:StudentsUpdate = Depends()
@students_api.delete("/students"
,summary='删除学生资料'
,description='输入需要删除的学生信息,工资筛选能删除大于等于输入工资的所有人。'
,description='输入需要删除的学生信息,删除条件任选,但不可全为空,工资筛选能删除大于等于输入工资的所有人。'
,response_model=list[StudentsDelete] ) # 逻辑删除/软删除
def delete_students( stu:StudentsDelete = Depends()
, db=Depends(get_db)
):
s_dict = stu.model_dump(exclude_unset=True)
result = add_student_dao(s=s_dict, db=db)
if not result:
raise HTTPException(status_code=500, detail='手机号已有学生使用。')
return result
result = delete_student_dao(s=s_dict, db=db)
return result
+23 -11
View File
@@ -112,33 +112,45 @@ def update_student_dao( s , db):
# 逻辑删除/软删除
def delete_student_dao( s , db):
try:
if not any([s.get('sid')
,s.get("student_name")
,s.get("student_phone")
,s.get("class_name")
,s.get("job_open_time")
,s.get("offer_issue_time")
,s.get("company_name")
,s.get("salary")
]):
raise HTTPException(status_code=400, detail="输入需要删除的学生信息,删除条件任选,但不可全为空。")
q = db.query(Students).filter(Students.is_deleted == False)
if s.get('sid'):
q = q.filter(Students.sid == s.sid)
q = q.filter(Students.sid == s.get("sid") )
if s.get('student_name'):
q = q.filter(Students.student_name == s.student_name)
q = q.filter(Students.student_name == s.get("student_name") )
if s.get("student_phone"):
q = q.filter(Students.student_phone == s.student_phone)
q = q.filter(Students.student_phone == s.get("student_phone") )
if s.get('class_name'):
q = q.filter(Students.class_name == s.class_name)
q = q.filter(Students.class_name == s.get("class_name") )
if s.get('job_open_time'):
q = q.filter(Students.job_open_time == s.job_open_time)
q = q.filter(Students.job_open_time == s.get("job_open_time") )
if s.get('offer_issue_time'):
q = q.filter(Students.offer_issue_time == s.offer_issue_time)
q = q.filter(Students.offer_issue_time == s.get("offer_issue_time") )
if s.get('company_name'):
q = q.filter(Students.company_name == s.company_name)
q = q.filter(Students.company_name == s.get("company_name") )
if s.get('salary'):
q = q.filter(Students.salary >= s.salary)
q = q.filter(Students.salary >= s.get("salary") )
s1_delete = q.all()
if not s1_delete:
raise HTTPException(status_code=404, detail="Student not found")
raise HTTPException(status_code=404, detail="没有找到该学生。")
for i in s1_delete:
i.is_deleted = True
i.deleted_date = datetime.now()
s2_deleted =[{"删除的学生ID":i.sid,"删除的学生姓名":i.student_name,"删除的学生电话":i.student_phone}for i in s1_delete]
s2_deleted =[{"sid":i.sid,"student_name":i.student_name,"student_phone":i.student_phone}for i in s1_delete]
except HTTPException:
raise
except Exception:
db.rollback()
return False
raise HTTPException(status_code=500, detail="Internal server error")
else:
db.commit()
return s2_deleted
+4 -4
View File
@@ -3,7 +3,7 @@ import datetime
from students.databases import *
from datetime import datetime
from sqlalchemy.dialects.mysql import DATETIME
class Students(Base):
__tablename__ = 'students'
@@ -27,11 +27,11 @@ class Students(Base):
salary = Column(Integer , comment='就业薪资')
create_date = Column(DATETIME , default=datetime.now , comment='创建时间' )
create_date = Column(DATETIME(fsp=3) , default=datetime.now , comment='创建时间' )
update_date = Column(DATETIME , default=datetime.now , comment='更新时间' )
update_date = Column(DATETIME(fsp=3) , default=datetime.now , comment='更新时间' )
is_deleted = Column(INTEGER , default=False , comment='是否删除:0-正常,1-已删除' )
deleted_date = Column(DATETIME , default=datetime.now , comment='删除时间' )
deleted_date = Column(DATETIME(fsp=3) , default=None , comment='删除时间' )