diff --git a/main.py b/main.py index 1d00a40..cd5a45d 100644 --- a/main.py +++ b/main.py @@ -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() diff --git a/students/README_students.md b/students/README_students.md new file mode 100644 index 0000000..94fc4b9 --- /dev/null +++ b/students/README_students.md @@ -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. + + diff --git a/students/api/students_api.py b/students/api/students_api.py index ffc29ed..d57a617 100644 --- a/students/api/students_api.py +++ b/students/api/students_api.py @@ -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 \ No newline at end of file + result = delete_student_dao(s=s_dict, db=db) + return result diff --git a/students/dao/students_dao.py b/students/dao/students_dao.py index 97d9e38..117c70c 100644 --- a/students/dao/students_dao.py +++ b/students/dao/students_dao.py @@ -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 diff --git a/students/model/students_model.py b/students/model/students_model.py index 7110361..90275a6 100644 --- a/students/model/students_model.py +++ b/students/model/students_model.py @@ -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='删除时间' )