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..450bcde --- /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 +from Teachers.schema.tea_response import TeaResponse + +tea_api = APIRouter(tags=['老师相关接口']) + +@tea_api.post('/tea',response_model=TeaResponse) +def add_tea(tea: TeaRequest,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,date=tea.model_dump()) +@tea_api.get('/tea',response_model=TeaResponse) +def get_tea(t:TeaRequest,db=Depends(get_db)): #开启会话窗口 + r = get_tea_dao(t,db=db) + if not r: + raise HTTPException(status_code=404,detail='老师不存在') + return TeaResponse(totals=len(r),date=r) +@tea_api.delete('tea/{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}') +def update_tea(id:int,tea:TeaRequest,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..6015b03 --- /dev/null +++ b/Teachers/dao/tea_dao.py @@ -0,0 +1,53 @@ +from Teachers.model.tea_model import Tea + +#增加 +def add_tea_dao(t,db): + try: + t1 = Tea(**t) + db.add(t1) + except: + db.rollback() + return False + else: + db.commit() + return True + +#更新 +def update_tea_dao(id,update_data,db): + try: + rows = db.query(Tea).filter(Tea.tea_id == id,Tea.is_delete == False)(update_data) + except: + db.rollback() + return False + else: + db.commit() + return rows + +#查询 +def get_tea_dao(t,db): + query = db.query(Tea).filter(Tea.is_delete == False) + if t.tea_id: + query = query.filter(Tea.tea_id == t.tea_id) + if t.tea_name: + query = query.filter(Tea.tea_name == t.tea_name) + if t.tea_sex: + query = query.filter(Tea.tea_sex == t.tea_sex) + if t.claa_id: + query = query.filter(Tea.class_id == t.claa_id) + if t.class_sub: + query = query.filter(Tea.class_sub == t.class_sub) + r = query.all() + return [{'tea_id':i.tea_id,'tea_name':i.tea_name,'class_id':i.class_id,'class_sub':i.class_sub,'tea.sex':i.tea_sex} for i in r] + +#删除 +def delete_tea_dao(id,db): + try: + row = db.query(Tea).filter(Tea.tea_id == id).delete() + except: + db.rollback() + row = 0 + else: + db.commit() + return row + + diff --git a/Teachers/database.py b/Teachers/database.py new file mode 100644 index 0000000..84a5fe0 --- /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/ai0824?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..93a5c02 --- /dev/null +++ b/Teachers/model/tea_model.py @@ -0,0 +1,39 @@ +from Teachers.database import * +from datetime import datetime +from sqlalchemy import * +import enum + +class Gender(str,enum.Enum): + m = '男' + f = '女' + +class Tea(Base): + __tablename__ = 'order_info_tea' + tea_id = Column(Integer + , primary_key=True + ,nullable=False + ,autoincrement=True + ,comment='老师id') + tea_name = Column(String(50) + ,nullable=False + ,comment='老师姓名') + tea_sex = Column(Enum (Gender),default='未知' + ,comment='老师性别') + class_id = Column(Integer + ,nullable=False + ,comment='班级id') + class_sub = Column(String(50) + ,nullable=False + ,comment='教学科目') + create_date = Column(DateTime + ,default=datetime.now + ,comment='创建时间') + update_date = Column(DateTime + ,onupdate=datetime.now + ,comment='更新时间') + delete_data = Column(DateTime + ,onupdate=datetime.now + ,comment='删除时间') + is_delete = Column(Integer,default=False,comment='是否删除') + + 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..0797917 --- /dev/null +++ b/Teachers/schema/tea_request.py @@ -0,0 +1,10 @@ +from pydantic import BaseModel +from Teachers.model.tea_model import * +class TeaRequest(BaseModel): + class_id: int|None = None + tea_id: int|None = None + tea_name: str|None = None + tea_sex: Gender|None = None + class_sub: str|None = None + + diff --git a/Teachers/schema/tea_response.py b/Teachers/schema/tea_response.py new file mode 100644 index 0000000..88437d0 --- /dev/null +++ b/Teachers/schema/tea_response.py @@ -0,0 +1,7 @@ +from pydantic import BaseModel +class TeaResponse(BaseModel): + code: int = 200 + detail: str = 'OK' + totals:int = 0 + date: str |dict|tuple|list +