上传文件至「/」

This commit is contained in:
2026-09-19 14:45:05 +08:00
parent e6a6d38362
commit 60138f5c7d
5 changed files with 124 additions and 0 deletions
BIN
View File
Binary file not shown.
+18
View File
@@ -0,0 +1,18 @@
from sqlalchemy import *
from sqlalchemy.orm import declarative_base,sessionmaker
db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824?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()
+11
View File
@@ -0,0 +1,11 @@
from fastapi import FastAPI
from day23sk.api.order_api import order_api
app = FastAPI()
app.include_router(order_api,tags=['订单接口'],prefix='/orders')
if __name__ == '__main__':
import uvicorn
uvicorn.run("main:app",host='0.0.0.0',port=12345)
+50
View File
@@ -0,0 +1,50 @@
from fastapi import APIRouter,Depends,HTTPException
from day23sk.schema.order_request import OrderRequest,OrderResponse
from day23sk.database import get_db
from day23sk.model.order_model import Order
from day23sk.dao.order_dao import add_student_dao,update_orders_dao,delete_orders_dao,get_orders_dao
order_api = APIRouter()
@order_api.post('',response_model=OrderResponse)
def add_orders(order:OrderRequest,db=Depends(get_db)):
d = order.model_dump()
r = add_student_dao( o=d,db=db )
if not r:
raise HTTPException(status_code=500,detail='服务器繁忙,请稍后添加!')
return OrderResponse(totals=1,data=d)
@order_api.put('/{id}')
def get_orders(order:OrderRequest,id:int,db=Depends(get_db)):
d = order.model_dump(exclude_unset=True)
r = update_orders_dao( id=id,update_data=d,db=db )
if not r:
raise HTTPException(status_code=500, detail='没有更新!')
return {'code':200,'totals':r,'detail':'更新成功'}
@order_api.get('')
def get_orders(order_title:str,db=Depends(get_db)):
r = get_orders_dao( order_title=order_title ,db=db )
if r is None:
raise HTTPException(status_code=500,detail='订单异常!')
if not r:
raise HTTPException(status_code=404,detail="订单不存在")
return [{"order_id":i.id,"order_title":i.order_title,"user_id":i.userid,"create_date":i.create_date,"update_date":i.update_date} for i in r]
@order_api.delete('/{id}')
def get_orders(id:int,db=Depends(get_db)):
r = delete_orders_dao( id=id ,db=db)
if r is None:
raise HTTPException(status_code=500, detail='删除异常,稍后操作!')
if r == 0:
raise HTTPException(status_code=404, detail='订单不存在!')
return {'code': 200, 'totals': r, 'detail': '删除成功'}
# 要求:
'''
①把剩下的delete、get查询接口完成dao层的分层 (√)
②新增一个user_info的表,有外键联系,oder订单表外键依赖user_info,改造一下订单post的接口,新增订单前,判断下用户的id是否存在user_info表里
'''
+45
View File
@@ -0,0 +1,45 @@
from day23sk.model.order_model import Order
def add_student_dao(o,db):
try:
o1 = Order( **o) # 将字典解析成键值对关键字参数输入 title = xxx, userid = XXX
db.add(o1)
except Exception:
db.rollback()
return False
else:
db.commit()
return True
def update_orders_dao(id,update_data,db):
try: # 数据更新是有返回值的,返回的是影响的行数
rows = db.query( Order ).filter( Order.id == id ).update( update_data )
except Exception:
db.rollback()
return False
else:
db.commit()
return rows
def delete_orders_dao(id,db):
try:
rows = db.query( Order ).filter( Order.id == id ).delete()
except Exception:
db.rollback()
return None
else:
db.commit()
return rows
def get_orders_dao(order_title,db):
try:
rows = db.query( Order ).filter( Order.title == order_title ).all()
except Exception:
db.rollback()
return False
else:
db.commit()
return rows