Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89ed81c279 | ||
|
|
c04ecc15fe | ||
|
|
b6ae3ec2ce | ||
|
|
924270b966 | ||
|
|
f8ef7b37a4 | ||
|
|
cf67754e0c |
-19
@@ -1,19 +0,0 @@
|
|||||||
from sqlalchemy import *
|
|
||||||
from sqlalchemy.orm import declarative_base,sessionmaker
|
|
||||||
|
|
||||||
db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824?charset=utf8"
|
|
||||||
engine = create_engine(db_url,pool_size=50)
|
|
||||||
|
|
||||||
Base = declarative_base()
|
|
||||||
|
|
||||||
Session = sessionmaker(bind=engine
|
|
||||||
,autoflush=False
|
|
||||||
,autocommit = False
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_db():
|
|
||||||
db = Session()
|
|
||||||
try:
|
|
||||||
yield db
|
|
||||||
finally:
|
|
||||||
db.close()
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
# 使用orm结合fastapi接口对数据库的订单表进行增删改查
|
|
||||||
# ① 连接数据库,定义数据库表模型,以及数据库会话工具
|
|
||||||
# ② 定义请求体模型,编写post接口对数据库的订单表插入数据
|
|
||||||
# ③ 编写put接口对订单进行更新操作
|
|
||||||
# ④ 编写get接口对订单进行查询操作
|
|
||||||
# ⑤ 编写delete接口对订单进行删除操作
|
|
||||||
# ① api目录里编写一个文件order_api.py ,利用api路由分发,存放编写好的以上四个订单增删改查接口
|
|
||||||
from fastapi import APIRouter, Depends, HTTPException
|
|
||||||
from homework.day23.schema.order_schema import *
|
|
||||||
from homework.day23.database import get_db
|
|
||||||
from homework.day23.dao.order_dao import *
|
|
||||||
|
|
||||||
OrderAPI = APIRouter()
|
|
||||||
|
|
||||||
@OrderAPI.post("",summary="订单新增接口",response_model=OrderResponse)
|
|
||||||
def add_order(ord:list[OrderRequest],db=Depends(get_db)):
|
|
||||||
for i in ord:
|
|
||||||
d = i.model_dump()
|
|
||||||
r = add_order_dao(o=d,db=db)
|
|
||||||
if not r:
|
|
||||||
raise HTTPException(status_code=500,detail='添加失败!请稍后在添加!')
|
|
||||||
return OrderResponse(detail='添加成功!',total=len(ord))
|
|
||||||
|
|
||||||
@OrderAPI.put("/{order_id}",summary="订单更新接口",response_model=OrderResponse)
|
|
||||||
def update_order(order_id:int, ord:OrderRequest,db=Depends(get_db)):
|
|
||||||
rows = update_order_dao(id=order_id,o=ord,db=db)
|
|
||||||
if not rows:
|
|
||||||
raise HTTPException(status_code=500, detail='更新失败!')
|
|
||||||
return OrderResponse(detail='更新成功!',total= rows )
|
|
||||||
|
|
||||||
@OrderAPI.get("",summary="订单查询接口",response_model=OrderResponse)
|
|
||||||
def get_order(order_title:str|None = None,order_id:int|None = None,page:int=1,page_size:int=10,db=Depends(get_db)):
|
|
||||||
r = get_order_dao(id = order_id,title=order_title,p=page,pz=page_size,db=db)
|
|
||||||
if r:
|
|
||||||
return OrderResponse(detail='更新成功!',total=len(r),data=r )
|
|
||||||
raise HTTPException(status_code=404, detail='订单不存在!')
|
|
||||||
|
|
||||||
@OrderAPI.delete("/{order_id}",summary="订单删除接口",response_model=OrderResponse)
|
|
||||||
def delete_order(order_id:int,db=Depends(get_db)):
|
|
||||||
rows = del_order_dao(id=order_id,db=db)
|
|
||||||
if not rows:
|
|
||||||
raise HTTPException(status_code=500, detail='删除异常!')
|
|
||||||
return OrderResponse(detail='删除成功!',total= rows )
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
from homework.day23.model.order_model import *
|
|
||||||
from sqlalchemy import *
|
|
||||||
def add_order_dao(o ,db):
|
|
||||||
try:
|
|
||||||
ord1 = Order(**o)
|
|
||||||
db.add(ord1)
|
|
||||||
except:
|
|
||||||
db.rollback()
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
db.commit()
|
|
||||||
return True
|
|
||||||
|
|
||||||
def get_order_dao(id,title,p,pz,db):
|
|
||||||
r = db.query(Order).filter(or_(Order.title == title, Order.id == id)).\
|
|
||||||
offset((p - 1) * pz).limit(pz).all()
|
|
||||||
if r:
|
|
||||||
return [{'Order_id': i.id, 'Order_title': i.title, 'userid': i.userid,
|
|
||||||
'create_date': i.create_date, 'update_date': i.update_date} for i in r]
|
|
||||||
|
|
||||||
def del_order_dao(id,db):
|
|
||||||
try:
|
|
||||||
rows = db.query(Order).filter(Order.id == id).delete()
|
|
||||||
except:
|
|
||||||
db.rollback()
|
|
||||||
rows = 0
|
|
||||||
else:
|
|
||||||
db.commit()
|
|
||||||
finally:
|
|
||||||
return rows
|
|
||||||
|
|
||||||
def update_order_dao(id,o,db):
|
|
||||||
try:
|
|
||||||
rows = db.query(Order).filter(Order.id == id ).update(o.model_dump(exclude_unset=True))
|
|
||||||
except:
|
|
||||||
db.rollback()
|
|
||||||
rows = 0
|
|
||||||
else:
|
|
||||||
db.commit()
|
|
||||||
finally:
|
|
||||||
return rows
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
# model目录里编写一个order_model.py ,存放的是订单表的表模型类
|
|
||||||
from homework.day23.database import DATETIME,Base,Column,Integer,String,engine
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
class Order(Base):
|
|
||||||
__tablename__ = "order_info"
|
|
||||||
id = Column(Integer , primary_key=True, autoincrement=True, comment='订单编号,自增主键')
|
|
||||||
title = Column(String(50) , nullable=False)
|
|
||||||
userid = Column(Integer
|
|
||||||
# ,ForeignKey('user_info_detail.id')
|
|
||||||
, nullable=False)
|
|
||||||
create_date = Column(DATETIME, default=datetime.now)
|
|
||||||
update_date = Column(DATETIME, default=datetime.now, onupdate=datetime.now)
|
|
||||||
|
|
||||||
Base.metadata.create_all(engine)
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
|
|
||||||
# order_schema.py, 存放的是订单表的相关请求体、相应体模型
|
|
||||||
from pydantic import BaseModel
|
|
||||||
|
|
||||||
class OrderRequest(BaseModel):
|
|
||||||
title:str|None = None
|
|
||||||
userid:int|None=None
|
|
||||||
|
|
||||||
class OrderResponse(BaseModel):
|
|
||||||
code:int = 200
|
|
||||||
detail:str = '成功'
|
|
||||||
total:int = 1
|
|
||||||
data:int|list|dict|tuple|None
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user