# 使用orm结合fastapi接口对数据库的订单表进行增删改查 from sqlalchemy import * from sqlalchemy.orm import declarative_base,sessionmaker from datetime import datetime from pydantic import BaseModel from fastapi import FastAPI,Form # ① 连接数据库,定义数据库表模型,以及数据库会话工具 db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824?charset=utf8mb4" engine = create_engine(db_url ,echo=True ,pool_size=50 ) Base = declarative_base() class Order(Base): # python里的表名字 __tablename__ = 'order_info_detail' # 实际数据库的表名字 id = Column( Integer # 声明字段的数据类型 , primary_key=True # 声明是主键 , autoincrement=True # 声明是自增主键 , comment='订单编号,自增主键' # 注释 ) title = Column( String(50) # 对应数据库的varchar类型 ,nullable=False # 不允许为null ) userid = Column( Integer ) # 外键约束 create_date = Column(DATETIME , default=datetime.now # 默认值是当前时间 ) update_date = Column(DATETIME , default=datetime.now # 首次创建的时间跟更新时间一致 , onupdate=datetime.now ) Order.__table__.create(engine, checkfirst=True) session = sessionmaker(bind=engine ,autoflush=False ,autocommit=False ) # ② 定义请求体模型,编写post接口对数据库的订单表插入数据 class Order1(BaseModel): title:str userid:int app = FastAPI(title='订单增删改') @app.post('/Orders') def order1(o:Order1=Form()): db = session() d = o.model_dump() o1 = Order(**d) db.add(o1) db.commit() db.close() return o1 # ③ 编写put接口对订单进行更新操作 @app.put('/Orders') def order1(id:int,o:Order1=Form()): db = session() db.query(Order).filter(Order.id == id).update(o.model_dump(exclude_unset=True)) db.commit() db.close() return '查询订单' # ④ 编写get接口对订单进行查询操作 @app.get('/Orders') def order1(title:str|None=None,id:int|None=None): db = session() print(title,id) r = db.query(Order).filter(or_(Order.title == title,Order.userid == id)).all() db.close() return [ {"order_id":i.id,'order_title':i.title,"user_id":i.userid,"create_date":i.create_date,"update_date":i.update_date} for i in r] # ⑤ 编写delete接口对订单进行删除操作 @app.delete('/Orders') def order1(title:str,id:int|None=None): db = session() db.query(Order).filter(or_(Order.title == title,Order.id == id)).delete() db.commit() db.close() return '删除成功' # ⑥ 总结下orm跟fastapi接口的结合使用步骤以及简单的语法结构框架 ''' 连接数据库,创建模型基类,定义数据库表模型,以及数据库会话工具 ''' ''' # 思考下: 现在需要创建三个目录,api、model、schema ① api目录里编写一个文件order_api.py ,利用api路由分发,存放编写好的以上四个订单增删改查接口 ② model目录里编写一个order_model.py ,存放的是订单表的表模型类 ③ schema目录里编写一个 order_schema.py , 存放的是订单表的相关请求体、相应体模型 ④ 在项目目录下创建一个 main.py文件,从main.py文件启动整个接口程序 尝试操作下! '''