初始化
This commit is contained in:
BIN
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
from fastapi import APIRouter,Depends
|
||||
from dao.order_dao import select_orders,insert_users,update_users,delete_users
|
||||
from schema.order_schema import OrderResponse
|
||||
|
||||
orderapi = APIRouter()
|
||||
|
||||
@orderapi.get('/orders')
|
||||
def get_orders(data=Depends(select_orders)):
|
||||
l = []
|
||||
for i in data:
|
||||
l.append({'id':i.id,'title':i.title,'userid':i.userid,'create_date':i.create_date,'update_date':i.update_date})
|
||||
return l
|
||||
|
||||
@orderapi.post('/orders',response_model=OrderResponse)
|
||||
def add_order(data=Depends(insert_users)):
|
||||
return data
|
||||
|
||||
@orderapi.put('/orders',response_model=OrderResponse)
|
||||
def put_order(data=Depends(update_users)):
|
||||
return data
|
||||
|
||||
@orderapi.delete('/orders')
|
||||
def delete_order(data=Depends(delete_users)):
|
||||
return data
|
||||
@@ -0,0 +1,40 @@
|
||||
from fastapi import Form,HTTPException
|
||||
from model.order_model import OrderModel
|
||||
from schema.order_schema import OrderRequest
|
||||
from util.database import db
|
||||
|
||||
def select_orders():
|
||||
try:
|
||||
order_list = db.query(OrderModel).all()
|
||||
return order_list
|
||||
except:
|
||||
raise HTTPException(status_code=500,detail="查询异常")
|
||||
|
||||
def insert_users(req:OrderRequest=Form()):
|
||||
try:
|
||||
data = req.model_dump()
|
||||
db.add(OrderModel(**data))
|
||||
db.commit()
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
raise HTTPException(status_code=500,detail="查询异常")
|
||||
return req.model_dump()
|
||||
|
||||
def update_users(id:int,req:OrderRequest=Form()):
|
||||
try:
|
||||
db.query(OrderModel).filter(OrderModel.id == id) \
|
||||
.update(req.model_dump(exclude_unset=True))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500,detail="更新异常")
|
||||
else:
|
||||
db.commit()
|
||||
return req.model_dump(exclude_unset=True)
|
||||
|
||||
def delete_users(id:int):
|
||||
try:
|
||||
db.query(OrderModel).filter(OrderModel.id == id).delete()
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500,detail="删除异常")
|
||||
else:
|
||||
db.commit()
|
||||
return {'code':200,'details':'删除成功'}
|
||||
@@ -0,0 +1,23 @@
|
||||
# 使用orm结合fastapi接口对数据库的订单表进行增删改查
|
||||
# ① 连接数据库,定义数据库表模型,以及数据库会话工具
|
||||
# ② 定义请求体模型,编写post接口对数据库的订单表插入数据
|
||||
# ③ 编写put接口对订单进行更新操作
|
||||
# ④ 编写get接口对订单进行查询操作
|
||||
# ⑤ 编写delete接口对订单进行删除操作
|
||||
# ⑥ 总结下orm跟fastapi接口的结合使用步骤以及简单的语法结构框架
|
||||
|
||||
'''
|
||||
# 思考下:
|
||||
现在需要创建三个目录,api、model、schema
|
||||
① api目录里编写一个文件order_api.py ,利用api路由分发,存放编写好的以上四个订单增删改查接口
|
||||
② model目录里编写一个order_model.py ,存放的是订单表的表模型类
|
||||
③ schema目录里编写一个 order_schema.py , 存放的是订单表的相关请求体、相应体模型
|
||||
④ 在项目目录下创建一个 main.py文件,从main.py文件启动整个接口程序
|
||||
尝试操作下!
|
||||
'''
|
||||
|
||||
from fastapi import FastAPI
|
||||
from api.order_api import orderapi
|
||||
|
||||
app = FastAPI()
|
||||
app.include_router(orderapi,tags=['订单表'])
|
||||
@@ -0,0 +1,13 @@
|
||||
from sqlalchemy import Integer,String,DATETIME,Column
|
||||
from util.database import Base,engine
|
||||
from datetime import datetime
|
||||
|
||||
class OrderModel(Base):
|
||||
__tablename__ = 'order'
|
||||
id = Column(Integer,primary_key=True,autoincrement=True)
|
||||
title = Column(String(50),nullable=False)
|
||||
userid = Column(Integer,nullable=False)
|
||||
create_date = Column(DATETIME,default=datetime.now)
|
||||
update_date = Column(DATETIME,default=datetime.now,onupdate=datetime.now)
|
||||
|
||||
Base.metadata.create_all(engine)
|
||||
@@ -0,0 +1,11 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
class OrderRequest(BaseModel):
|
||||
title:str|None = None
|
||||
userid:int|None = None
|
||||
|
||||
class OrderResponse(BaseModel):
|
||||
code:int = 200
|
||||
detail:str = 'ok'
|
||||
title:str|None
|
||||
userid:int|None
|
||||
@@ -0,0 +1,9 @@
|
||||
from sqlalchemy import create_engine
|
||||
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,pool_size=50)
|
||||
Base = declarative_base()
|
||||
|
||||
Session = sessionmaker(bind=engine,autoflush=False,autocommit=False)
|
||||
db = Session()
|
||||
Binary file not shown.
Reference in New Issue
Block a user