Files
fastapi_tutor_yb/model/order.py
T

86 lines
2.8 KiB
Python
Raw Normal View History

2026-09-19 10:41:18 +08:00
from pydantic import BaseModel
from sqlalchemy.orm import declarative_base,sessionmaker,Session
2026-09-19 10:41:18 +08:00
from sqlalchemy import Column, Integer,String,DATETIME,create_engine
from datetime import datetime
db_url = "mysql+pymysql://geeker:geeker@127.0.0.1:3306/fastapi_tutor?charset=utf8mb4"
engine = create_engine(db_url)
def get_session():
# Session = sessionmaker(bind=engine
# , autoflush=False
# , autocommit=False
# )
# session = Session(engine)
# try:
# yield session
# finally:
# session.close()
with Session() as session:
yield session
# with Session(engine) as session:
# yield session
2026-09-19 10:41:18 +08:00
Base = declarative_base() # 执行函数,返回一个基类
from model.template import Template
class Order(Base,Template): # python里的表名字
__tablename__ = 'order_info_bool_tinyint' # 实际数据库的表名字
2026-09-19 10:41:18 +08:00
title = Column( String(50) # 对应数据库的varchar类型
,nullable=False # 不允许为null
)
userid = Column( Integer
# ,ForeignKey('user_info_detail.id')
,nullable=False ) # 外键约束
# 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
# # ,ForeignKey('user_info_detail.id')
# ,nullable=False ) # 外键约束
# create_date = Column(DATETIME
# , default=datetime.now # 默认值是当前时间
# )
# update_date = Column(DATETIME
# , default=datetime.now # 首次创建的时间跟更新时间一致
# , onupdate=datetime.now
# )
2026-09-21 07:53:26 +08:00
# 定义创建订单的请求体模型
class OrderRequest(BaseModel):
id:int|None = None
title:str|None = None
userid:int|None =None
# todo 序列化问题: Order - Base 无法直接序列
class OrderSchema(BaseModel):
id:int
title:str
userid:int
create_date:datetime
update_date:datetime
class OrderResponse(BaseModel):
2026-09-21 07:53:26 +08:00
status_code:str = 200
detail:str = 'succeed!'
total:int = 1
# data:str|dict|list[OrderSchema] # 响应数据
data:str|dict|list[object] # 响应数据
2026-09-19 10:41:18 +08:00
Order.__table__.create(engine,checkfirst = True)