diff --git a/core/config.py b/core/config.py index e69de29..437375f 100644 --- a/core/config.py +++ b/core/config.py @@ -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' \ No newline at end of file diff --git a/core/database.py b/core/database.py index e69de29..874c6ef 100644 --- a/core/database.py +++ b/core/database.py @@ -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() diff --git a/main.py b/main.py index 235d211..fe32962 100644 --- a/main.py +++ b/main.py @@ -1,15 +1,24 @@ from fastapi import FastAPI from api.example import example_router +from middleware import log_middleware import uvicorn app = FastAPI() +app.middleware("http")(log_middleware) + +#-------------朱婷婷-------------- + +#-------------李玉杰-------------- + +#-------------张义--------------- + +#-------------薄鑫--------------- #-------------张昕浩--------------- app.include_router(example_router) +#-------------曾凯--------------- - - - +#-------------南方宇--------------- #-----------主程序---------------- diff --git a/middleware.py b/middleware.py index e69de29..164a3f2 100644 --- a/middleware.py +++ b/middleware.py @@ -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 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index e69de29..0b1a59e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -0,0 +1,5 @@ +fastapi==0.128.0 +uvicorn==0.40.0 +SQLAlchemy==2.0.49 +PyMySQL==1.1.2 +pydantic==2.13.3 diff --git a/schemas/common.py b/schemas/common.py new file mode 100644 index 0000000..423ea2d --- /dev/null +++ b/schemas/common.py @@ -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')