Files

74 lines
3.1 KiB
Python

from pydantic import BaseModel
from sqlalchemy import create_engine, Column, Integer,String,DATETIME,DECIMAL
from sqlalchemy.orm import declarative_base, sessionmaker
from datetime import datetime
from typing import Annotated
from fastapi import Depends, FastAPI,APIRouter,Form,File,UploadFile
from fastapi.security import OAuth2PasswordRequestForm
route = APIRouter(prefix="/mysql",tags=["mysql"])
db_url = "mysql+pymysql://geeker:geeker@localhost:3306/fastapi_tutor?charset=utf8mb4"
engine = create_engine(db_url, pool_size= 50, echo=True)
Session = sessionmaker( bind=engine
,autoflush=False # 是否开启自动刷新python新增的数据到实际的数据库内存缓存中
,autocommit = False # 不自动提交数据,这个是真正提交到数据库磁盘永久生效的 -> 2.0 不支持True自动提交
)
session = Session() # 实例化一个数据库操作会话
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
)
price = Column(DECIMAL)
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
)
class User(Base): # python里的表名字
__tablename__ = 'user_info_detail' # 实际数据库的表名字
id = Column( Integer # 声明字段的数据类型
, primary_key=True # 声明是主键
, autoincrement=True # 声明是自增主键
, comment='用户编号,自增主键' # 注释
)
username = Column( String(50) # 对应数据库的varchar类型
,nullable=False # 不允许为null
,comment='用户名'
)
create_date = Column(DATETIME
, default=datetime.now # 默认值是当前时间
)
update_date = Column(DATETIME
, default=datetime.now # 首次创建的时间跟更新时间一致
, onupdate=datetime.now
)
@route.get("/user")
def user_detail_info():
return session.query(User).all()
@route.post("/user")
def user_detail_info(username:str):
session.add(User(username=username))
return session.query(User).all()