修改delete相关代码逻辑,新增README_students.md用来做模块解释。
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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='删除时间' )
|
||||
|
||||
|
||||
Reference in New Issue
Block a user