FastAPI中使用SQLALchemy配置步骤(mongodb/postgresql)
步骤
1 安装sqlalchemy
npm install sqlalchemy
2 项目下新建文件夹core
3 文件夹core下新建config.py文件,保存db基本信息
4 配置config.py,注意postgresql这里用asyncpg支持异步
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
#mongodb
mongodb_url:str="mongodb://localhost:xxxx"
mongodb_dbname:str="xxx"
#postgresql
postgres_url:str="postgresql+asyncpg://user:password@localhost:5432/dbname"
settings=Settings()
5 新建utils文件夹
6 utils文件夹下新建database.py文件,配置连接池
7 配置database.py文件
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.asyncio import create_async_engine,AsyncSession,async_sessionmaker
from motor.motor_asyncio import AsyncIOMotorClient
from ..core.config import settings
#mongo连接池
mongo_client=AsyncIOMotorClient(settings.mongodb_url)
mongo_db=mongo_client[settings.mongodb_dbname]
#postgresql连接池(注意这里用create_async_engine,async_sessionmaker支持异步)
engine_db=create_async_engine(settings.postgres_url,pool_pre_ping=True)
sessionlocal=async_sessionmaker(autocommit=False,autoflush=False,bind=engine_db,class_=AsyncSession)
# 声明式基类
Base=declarative_base()
8 配置路由
新建api文件夹,api文件夹下新建transfermogodb.py文件
9 使用路由,配置transfermogodb.py
from fastapi import APIRouter,Depends,HTTPException,Request
from pydantic import BaseModel
from ..utils.database import mongo_db
router=APIRouter()
router.post("/data")
async def save_test():
try:
collection_page=mongo_db["test"]
collection_page.insert_one({"name":"test1"})
except Exception as e:
pass
10 配置路由集合
新建routers文件夹,routes文件夹下新建__init__.py文件
11 配置__init__.py文件
from fastapi import APIRouter
from app.api.transfermogodb import router as transfermogodb_router
router_collections=APIRouter()
router_collections.include_router(transfermogodb_router,prefix="/transfermogodb")
12 main.ts中引用路由集合
import uvicorn
import traceback
from fastapi import FastAPI,Request
from app.routers import router_collection
app=FastAPI()
app.include_router(router_collections,prefix="/api")
13 测试api连通性
更多推荐
所有评论(0)