diff --git a/config.yml b/config.yml new file mode 100644 index 0000000..eef42e4 Binary files /dev/null and b/config.yml differ diff --git a/tmpl/work/api/order_api.py b/tmpl/work/api/order_api.py new file mode 100644 index 0000000..55f817d --- /dev/null +++ b/tmpl/work/api/order_api.py @@ -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 diff --git a/tmpl/work/dao/order_dao.py b/tmpl/work/dao/order_dao.py new file mode 100644 index 0000000..fb0bc1a --- /dev/null +++ b/tmpl/work/dao/order_dao.py @@ -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':'删除成功'} diff --git a/tmpl/work/main.py b/tmpl/work/main.py new file mode 100644 index 0000000..ce21d2b --- /dev/null +++ b/tmpl/work/main.py @@ -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=['订单表']) diff --git a/tmpl/work/model/order_model.py b/tmpl/work/model/order_model.py new file mode 100644 index 0000000..524490c --- /dev/null +++ b/tmpl/work/model/order_model.py @@ -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) diff --git a/tmpl/work/schema/order_schema.py b/tmpl/work/schema/order_schema.py new file mode 100644 index 0000000..01de700 --- /dev/null +++ b/tmpl/work/schema/order_schema.py @@ -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 diff --git a/tmpl/work/util/database.py b/tmpl/work/util/database.py new file mode 100644 index 0000000..bcdd5d7 --- /dev/null +++ b/tmpl/work/util/database.py @@ -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() diff --git a/tmpl/项目流程.xmind b/tmpl/项目流程.xmind new file mode 100644 index 0000000..36b3688 Binary files /dev/null and b/tmpl/项目流程.xmind differ