From 1b9e5b8a57600ec391681405d20bdcd884abaad4 Mon Sep 17 00:00:00 2001 From: chen <2966418553@qq.com> Date: Mon, 21 Sep 2026 14:54:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=90=E7=BB=A9=E5=BB=BA=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scores/api/score_api.py | 41 ++++++++++++++++++++++++++ scores/dao/score_dao.py | 53 ++++++++++++++++++++++++++++++++++ scores/database.py | 15 ++++++++++ scores/main.py | 12 ++++++++ scores/model/score_model.py | 29 +++++++++++++++++++ scores/schema/score_request.py | 12 ++++++++ 6 files changed, 162 insertions(+) create mode 100644 scores/api/score_api.py create mode 100644 scores/dao/score_dao.py create mode 100644 scores/database.py create mode 100644 scores/main.py create mode 100644 scores/model/score_model.py create mode 100644 scores/schema/score_request.py diff --git a/scores/api/score_api.py b/scores/api/score_api.py new file mode 100644 index 0000000..fd71ddd --- /dev/null +++ b/scores/api/score_api.py @@ -0,0 +1,41 @@ +from fastapi import APIRouter, Depends,HTTPException +from scores.database import get_db +from scores.dao.score_dao import get_scores_dao,add_scores_dao,update_scores_dao,delete_scores_dao +from scores.model.score_model import Score +from scores.schema.score_request import ScoreRequest, ScoreResponse + + +score_api = APIRouter() + + +@score_api.get('/Score') +def get_scores(cid:int,score,subject:str,abc=Depends(get_db)): + aa = get_scores_dao(cid,score,subject,abc) + if aa: + return aa + raise HTTPException(status_code=404,detail='不存在') + +@score_api.post('/Score',response_model=ScoreResponse) +def add_scores(score:ScoreRequest,db=Depends(get_db)): + a = score.model_dump() + aa = add_scores_dao(b=a,db=db) + if not aa: + raise HTTPException(status_code=500,detail='没有') + return ScoreResponse(data=a) + +@score_api.put('/Score,{cid}') +def get_scores(score:ScoreRequest,cid:int,db=Depends(get_db)): + a = score.model_dump(exclude_unset=True) + aa = update_scores_dao(cid = cid,update_date=a,db=db) + if not aa: + raise HTTPException(status_code=500,detail='没有更新') + return {'code':200,'totals':a,'detail':'更新成功'} + +@score_api.delete('/Score,{cid}') +def get_scores(cid:int,db=Depends(get_db)): + aaa = delete_scores_dao(cid,db) + if not aaa: + raise HTTPException(status_code=500,detail='没有删除') + return {'code':200,'totals':aaa,'detail':'更新成功'} + + diff --git a/scores/dao/score_dao.py b/scores/dao/score_dao.py new file mode 100644 index 0000000..73212bc --- /dev/null +++ b/scores/dao/score_dao.py @@ -0,0 +1,53 @@ +from scores.model.score_model import Score + +def get_scores_dao(cid,score,subject,db): + ab = db.query(Score) + if cid: + ab = ab.filter(Score.cid==cid) + if score: + ab = ab.filter(Score.score==score) + if subject: + ab = ab.filter(Score.subject==subject) + aa = ab.all() + if aa: + return [{'Score_cid':i.cid,'Score_score':i.cscore + ,'Score_subject':i.subject,'reate_date':i.create_date + ,'update_date':i.update_date}for i in aa] + +def add_scores_dao(b,db): + try: + aa = db.query(Score).filter(Score.cid==b['cid']).all() + if aa: + z = Score(**b) + db.add(z) + else: + raise ValueError + except: + db.rollback() + return False + else: + db.commit() + return True + +def update_scores_dao(cid,update_date,db): + try: + aa = db.query(Score).filter(Score.cid ==cid).update(update_date) + except: + db.rollback() + return False + else: + db.commit() + return aa + +def delete_scores_dao(cid,db): + try: + aaa = db.query(Score).filter(Score.cid ==cid).delete() + except: + db.rollback() + aaa = 0 + else: + db.commit() + finally: + return aaa + + diff --git a/scores/database.py b/scores/database.py new file mode 100644 index 0000000..f50aec9 --- /dev/null +++ b/scores/database.py @@ -0,0 +1,15 @@ +from sqlalchemy import * +from sqlalchemy.orm import declarative_base,sessionmaker + +db_url='mysql+pymysql://root:123456@127.0.0.1:3306/a0824?charset=utf8mb4' +engine = create_engine(db_url) + +Base = declarative_base() +Session = sessionmaker(bind=engine, autoflush = False, autocommit = False) + +def get_db(): + db = Session() + try: + yield db + finally: + db.close() \ No newline at end of file diff --git a/scores/main.py b/scores/main.py new file mode 100644 index 0000000..ee674a9 --- /dev/null +++ b/scores/main.py @@ -0,0 +1,12 @@ +from fastapi import FastAPI +from scores.api.score_api import score_api +from scores.database import * +app = FastAPI() + +app.include_router(score_api) + +Base.metadata.create_all(engine) + +if __name__ == '__main__': + import uvicorn + uvicorn.run('main:app',host='127.0.0.1',port=12346) \ No newline at end of file diff --git a/scores/model/score_model.py b/scores/model/score_model.py new file mode 100644 index 0000000..5a38e60 --- /dev/null +++ b/scores/model/score_model.py @@ -0,0 +1,29 @@ +from scores.database import Base +from datetime import datetime +from sqlalchemy import DateTime,Column,Integer,String,Float +class Score(Base): + __tablename__='score' + cid = Column(Integer + ,primary_key = True + ,autoincrement = True + ,comment ='考试序次' + ) + score = Column(Float,nullable = False) + subject = Column(String(100) + ,nullable = False + ) + create_date = Column(DateTime + ,default = datetime.now + ) + update_date = Column(DateTime + ,default = datetime.now + ,onupdate = datetime.now + ) + is_deleted = Column(Integer + ,default = 0 + ,comment='是否删除: 0-正常,1-已删除' + ) + deleted_date=Column(DateTime + ,default=datetime.now + ,comment='删除时间' + ) diff --git a/scores/schema/score_request.py b/scores/schema/score_request.py new file mode 100644 index 0000000..f924b8d --- /dev/null +++ b/scores/schema/score_request.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel + +class ScoreRequest(BaseModel): + cid:int + cscore:float + subject:str + +class ScoreResponse(BaseModel): + code:int = 200 + detail:str = 'OK' + totals:int = 0 + data:str|dict|tuple|list \ No newline at end of file