You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastApi结合Tortoise ORM与aerich时出现“No DB associated to model”问题的解决求助

解决Tortoise ORM的"No DB associated to model"异常

这个问题我之前也碰到过,核心原因是你提前手动调用了Tortoise.init_models,导致模型在数据库连接还没初始化完成时就被加载,无法和数据库实例绑定,最终触发了ConfigurationError。

问题分析

你的main.py里先执行了:

Tortoise.init_models(settings.TORTOISE_MODELS_LIST, "models")

但此时register_tortoise还没运行,Tortoise ORM还没有完成数据库连接的初始化和上下文绑定。而register_tortoise本身就会自动处理模型的初始化工作,你额外调用的init_models反而会让模型在无数据库上下文的状态下被注册,导致后续查询时找不到关联的DB。

解决方案

只需要移除多余的Tortoise.init_models调用即可,让register_tortoise来负责完整的ORM初始化流程。

修改后的main.py代码:

app = FastAPI()

# 移除这一行:Tortoise.init_models(settings.TORTOISE_MODELS_LIST, "models")
register_tortoise(
    app,
    config=settings.TORTOISE_ORM,
    generate_schemas=True,
    add_exception_handlers=True,
)
app.include_router(purchases.router.router)

if __name__ == "__main__":
    uvicorn.run("main:app", debug=True, reload=True, lifespan='on')

额外验证要点

  • 确认你的settings.py里的TORTOISE_MODELS_LIST已经正确包含了所有需要的模型(你已经加了"purchases.models"和"aerich.models",这部分没问题)
  • 确保aerich的迁移已经完全执行:运行aerich upgrade确认所有迁移脚本都应用到了数据库
  • 重启服务后测试接口,此时模型会在register_tortoise初始化过程中正确绑定到数据库连接,查询操作就能正常执行了

内容的提问来源于stack exchange,提问作者ftelnov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 05:27:32