Files
-------/PyCharmMiscProject/api.py
T

90 lines
3.5 KiB
Python
Raw Normal View History

2026-09-19 15:00:19 +08:00
# 使用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文件启动整个接口程序
尝试操作下!
'''