添加示例
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
"mysql+pymysql://root:123456@localhost/fastapi_db?charset=utf8mb4"
|
||||||
|
|
||||||
|
database_connect_user = 'root'
|
||||||
|
database_connect_password = '123456'
|
||||||
|
database_connect_ip = 'localhost'
|
||||||
|
database_connect_database_name = 'student_manager'
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
'''
|
||||||
|
1.此文件已经配置 engine 和 SessionLocal .
|
||||||
|
由于还没合库,需要自己去 /core/database 配置库名。默认为 student_manager
|
||||||
|
具体配置如下
|
||||||
|
用户:root
|
||||||
|
密码:123456
|
||||||
|
IP:localhost
|
||||||
|
库名:student_manager
|
||||||
|
|
||||||
|
2.如果还没开始建库,建库时统一将名称命名为 student_manager。
|
||||||
|
如果已经建库或在 models 目录写好Base函数,那先别提交分支,不然合并的时候会出问题,后天合库的时候再说。
|
||||||
|
'''
|
||||||
|
|
||||||
|
from sqlalchemy import create_engine
|
||||||
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
from .config import (
|
||||||
|
database_connect_user,
|
||||||
|
database_connect_password,
|
||||||
|
database_connect_ip,
|
||||||
|
database_connect_database_name,
|
||||||
|
)
|
||||||
|
engine = create_engine( #engine负责连接mysql
|
||||||
|
f"mysql+pymysql://{database_connect_user}:{database_connect_password}@{database_connect_ip}/{database_connect_database_name}?charset=utf8mb4",
|
||||||
|
pool_size=50
|
||||||
|
)
|
||||||
|
SessionLocal = sessionmaker(bind=engine, autoflush=False,autocommit=False)
|
||||||
|
|
||||||
|
def get_db():
|
||||||
|
db = SessionLocal()
|
||||||
|
try:
|
||||||
|
yield db
|
||||||
|
finally:
|
||||||
|
db.close()
|
||||||
|
|||||||
@@ -1,15 +1,24 @@
|
|||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from api.example import example_router
|
from api.example import example_router
|
||||||
|
from middleware import log_middleware
|
||||||
import uvicorn
|
import uvicorn
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
app.middleware("http")(log_middleware)
|
||||||
|
|
||||||
|
#-------------朱婷婷--------------
|
||||||
|
|
||||||
|
#-------------李玉杰--------------
|
||||||
|
|
||||||
|
#-------------张义---------------
|
||||||
|
|
||||||
|
#-------------薄鑫---------------
|
||||||
|
|
||||||
#-------------张昕浩---------------
|
#-------------张昕浩---------------
|
||||||
app.include_router(example_router)
|
app.include_router(example_router)
|
||||||
|
|
||||||
|
#-------------曾凯---------------
|
||||||
|
|
||||||
|
#-------------南方宇---------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#-----------主程序----------------
|
#-----------主程序----------------
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import time
|
||||||
|
|
||||||
|
async def log_middleware(request, call_next):
|
||||||
|
start_time = time.time()
|
||||||
|
response = await call_next(request)
|
||||||
|
end_time = time.time()
|
||||||
|
cost = end_time - start_time
|
||||||
|
print(f'{request.method} {request.url.path} cost={cost}')
|
||||||
|
return response
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
fastapi==0.128.0
|
||||||
|
uvicorn==0.40.0
|
||||||
|
SQLAlchemy==2.0.49
|
||||||
|
PyMySQL==1.1.2
|
||||||
|
pydantic==2.13.3
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
'''
|
||||||
|
两种情况:
|
||||||
|
1.响应成功,响应体设置为SuccessResponse。
|
||||||
|
2.响应失败,需要主动调用HTTPExpection报错,不然会产生响应码200,响应失败的问题。
|
||||||
|
'''
|
||||||
|
from pydantic import BaseModel,Field
|
||||||
|
from typing import Any
|
||||||
|
class SuccessResponse(BaseModel):
|
||||||
|
status_code:int=Field(default=200, ge= 200, lt = 300)
|
||||||
|
msg: Any=Field(default='OK')
|
||||||
Reference in New Issue
Block a user