diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..ba3e0d2 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306 + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..d81046c --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/learn_20260919_dome.iml b/.idea/learn_20260919_dome.iml new file mode 100644 index 0000000..ea1b721 --- /dev/null +++ b/.idea/learn_20260919_dome.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..930139e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ad5a223 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/student_manage_system.iml b/.idea/student_manage_system.iml new file mode 100644 index 0000000..8437fe6 --- /dev/null +++ b/.idea/student_manage_system.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Teachers/api/__init__.py b/Teachers/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Teachers/api/tea_api.py b/Teachers/api/tea_api.py new file mode 100644 index 0000000..da9519f --- /dev/null +++ b/Teachers/api/tea_api.py @@ -0,0 +1,36 @@ +from fastapi import APIRouter,Depends,HTTPException +from Teachers.schema import * +from Teachers.database import * +from Teachers.model.tea_model import * +from Teachers.dao.tea_dao import * +from Teachers.schema.tea_request import TeaRequest,NewTeaRequest +from Teachers.schema.tea_response import TeaResponse + +tea_api = APIRouter(tags=['老师相关接口']) + +@tea_api.post('/tea',response_model=TeaResponse,summary='新增老师',description='输入新增的老师信息,除去姓名外可以为空') +def add_tea(tea: NewTeaRequest,db=Depends(get_db)): + r = add_tea_dao(tea.model_dump(),db) + if not r: + raise HTTPException(status_code=500,detail='添加失败!') + return TeaResponse(totals=1,data=tea.model_dump()) +@tea_api.get('/tea',response_model=TeaResponse,summary='查询老师',description='任意选择输入的信息数量,不输入则查询全部老师') +def get_tea(t:TeaRequest=Depends(),db=Depends(get_db)): #开启会话窗口 + r = get_tea_dao(t.model_dump(),db=db) + if not r: + raise HTTPException(status_code=404,detail='老师不存在') + return TeaResponse(totals=len(r), data=r) +@tea_api.delete('/tea/{id}',summary='删除老师',description='输入删除的老师id') +def delete_tea(id:int|None,db=Depends(get_db)): + r = delete_tea_dao(id,db) + if not r: + raise HTTPException(status_code=500,detail='删除失败!') + return {'detail':'删除成功!'} + +@tea_api.put('/tea/{id}',summary='修改老师信息',description='输入更改的信息,老师的姓名和性别不能为空,其余可以为空') +def update_tea(id:int,tea:NewTeaRequest,db=Depends(get_db)): + t = tea.model_dump(exclude_unset= True) + r = update_tea_dao(id=id,update_data=t,db=db) + if not r: + raise HTTPException(status_code=404,detail='老师不存在') + return {'detail':'修改成功'} diff --git a/Teachers/dao/__init__.py b/Teachers/dao/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Teachers/dao/tea_dao.py b/Teachers/dao/tea_dao.py new file mode 100644 index 0000000..ce110c6 --- /dev/null +++ b/Teachers/dao/tea_dao.py @@ -0,0 +1,72 @@ +from Teachers.model.tea_model import Tea +from datetime import datetime + +#增加 +def add_tea_dao(t,db): + try: + t1 = Tea(**t) + db.add(t1) + except: + db.rollback() + return False + else: + db.commit() + return True + +#更新 +def add_tea_dao(t, db): + try: + t1 = Tea(**t) + db.add(t1) + except Exception as e: + db.rollback() + print('新增失败原因:', e) + return False + else: + db.commit() + return True + +#查询 +def get_tea_dao(t,db): + query = db.query(Tea).filter(Tea.is_delete == False) + if t.get('id'): + query = query.filter(Tea.id == t.get('id') ) + if t.get('name'): + query = query.filter(Tea.name == t.get('name') ) + if t.get("sex"): + query = query.filter(Tea.sex == t.get('sex') ) + if t.get('class_id'): + query = query.filter(Tea.class_id == t.get('claa_id') ) + if t.get('sub'): + query = query.filter(Tea.sub == t.get('sub') ) + if t.get('home_place'): + query = query.filter(Tea.home_place == t.get('home_place') ) + if t.get('specialty'): + query = query.filter(Tea.specialty == t.get('specialty') ) + if t.get('start_time'): + query = query.filter(Tea.start_time == t.get('start_time') ) + if t. get('work_experience'): + query = query.filter(Tea.work_experience == t.get('work_experience') ) + if t.get('education'): + query = query.filter(Tea.education == t.get('education') ) + if t.get('college'): + query = query.filter(Tea.collage == t.get('college') ) + r = query.all() + return [{'id':i.id,'name':i.name,'class_id':i.class_id,'sub':i.sub,'tea.sex':i.sex,'home_place':i.home_place + ,'specialty':i.specialty,'start_time':i.start_time,'work_experience':i.work_experience,'college':i.college} for i in r] + +#删除 +def delete_tea_dao(id,db): + try: + row = db.query(Tea).filter(Tea.id == id + ,Tea.is_delete == False + ).update({'is_delete':True,'delete_time':datetime.now()}) + except: + db.rollback() + row = 0 + return + else: + db.commit() + return row + + diff --git a/Teachers/database.py b/Teachers/database.py new file mode 100644 index 0000000..07ef505 --- /dev/null +++ b/Teachers/database.py @@ -0,0 +1,17 @@ +from sqlalchemy import * +from sqlalchemy.orm import sessionmaker,declarative_base + +db_tea = 'mysql+pymysql://root:123456@127.0.0.1:3306/student_manage_system?charset=utf8mb4' +engine1 = create_engine(db_tea) + +Base = declarative_base() +Session = sessionmaker(bind=engine1 + ,autoflush = False + ,autocommit = False) +def get_db(): + db = Session() + try: + yield db + finally: + db.close() +Base.metadata.create_all(engine1) \ No newline at end of file diff --git a/Teachers/main.py b/Teachers/main.py new file mode 100644 index 0000000..1ec14a3 --- /dev/null +++ b/Teachers/main.py @@ -0,0 +1,16 @@ +from fastapi import FastAPI +from Teachers.model.tea_model import * +from api.tea_api import tea_api +app = FastAPI() +app.include_router(tea_api) + +Base.metadata.create_all(engine1) + +if __name__ == "__main__": + import uvicorn + uvicorn.run('main:app', host='0.0.0.0', port=55000) + """ + IPv4 地址 . . . . . . . . . . . . : 192.168.1.51 + 子网掩码 . . . . . . . . . . . . : 255.255.255.0 + 默认网关. . . . . . . . . . . . . : 192.168.1.1 + """ \ No newline at end of file diff --git a/Teachers/model/__init__.py b/Teachers/model/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Teachers/model/tea_model.py b/Teachers/model/tea_model.py new file mode 100644 index 0000000..68a09c4 --- /dev/null +++ b/Teachers/model/tea_model.py @@ -0,0 +1,48 @@ +from Teachers.database import * +from datetime import datetime +from sqlalchemy import * +import enum + +class Gender(str,enum.Enum): + m = '男' + f = '女' + +class Tea(Base): + __tablename__ = 'teachers' + id = Column(Integer + , primary_key=True + ,nullable=False + ,autoincrement=True + ,comment='id') + name = Column(String(50) + ,nullable=False + ,comment='姓名') + sex = Column(Enum(Gender),default='未知' + ,comment='性别') + class_id = Column(Integer + ,nullable=False + ,comment='班级id') + sub = Column(String(50) + ,nullable=False + ,comment='教学科目') + home_place = Column(String(50) + ,comment='家乡') + specialty = Column(String(50) + ,comment='专业') + start_time = Column(DateTime,comment='入职时间') + work_experience = Column(String(50) + ,comment='工作经验') + education = Column(String(50) + ,comment='学历') + collage = Column(String(50) + ,comment='毕业院校') + create_date = Column(DateTime + ,default=datetime.now + ,comment='创建时间') + update_date = Column(DateTime + ,onupdate=datetime.now + ,comment='更新时间') + is_delete = Column(Boolean,default=False,comment='是否删除') + delete_time = Column(DateTime) + + diff --git a/Teachers/schema/__init__.py b/Teachers/schema/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Teachers/schema/tea_request.py b/Teachers/schema/tea_request.py new file mode 100644 index 0000000..2bf3165 --- /dev/null +++ b/Teachers/schema/tea_request.py @@ -0,0 +1,31 @@ +from pydantic import BaseModel +from Teachers.model.tea_model import * + +#查询使用请求体 +class TeaRequest(BaseModel): + id: int|None = None + name: str|None = None + sex: Gender|None = None + class_id: int | None = None + sub: str|None = None + home_place: str|None = None + collage: str|None = None + education: str|None = None + work_experience: str|None = None + start_time: str|None = None + specialty: str|None = None + + +#更新、新增使用请求体(无法覆盖) +class NewTeaRequest(BaseModel): + name: str | None = None + sex: Gender + class_id: int | None = None + sub: str | None = None + home_place: str | None = None + collage: str | None = None + education: str | None = None + work_experience: str | None = None + start_time: datetime | None = None + specialty: str | None = None + diff --git a/Teachers/schema/tea_response.py b/Teachers/schema/tea_response.py new file mode 100644 index 0000000..ee7f554 --- /dev/null +++ b/Teachers/schema/tea_response.py @@ -0,0 +1,8 @@ +from pydantic import BaseModel + +class TeaResponse(BaseModel): + code: int = 200 + detail: str = 'OK' + totals:int = 0 + data: str |dict|tuple|list +