没有与模型问题相关的数据库 FastApi 和 Tortoise ORM & aerich
No DB associated to model problem FastApi and Tortoise ORM & aerich
我有一个由 FastApi 使用 Tortoise ORM 和 aerich 迁移制作的项目。
Aerich 初始化已成功完成,所有迁移也已完成。在这里你可以看到我的 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 被放置:
TORTOISE_MODELS_LIST = ["purchases.models", "aerich.models"]
TORTOISE_ORM = {
"connections": {"default": DATABASE_URL},
"apps": {
"models": {
"models": TORTOISE_MODELS_LIST,
"default_connection": "default",
},
},
}
我在启动时没有问题,但是当我运行这个方法时:
@router.get("/get/latest", tags=["purchases"], response_model=List[Purchase_Pydantic],
description="Shows last 25 purchases")
async def get_latest_purchases():
purchases = await Purchase.all()[:25]
return Purchase_Pydantic.from_tortoise_orm(purchases)
我有这样一个奇怪的问题:
tortoise.exceptions.ConfigurationError: No DB associated to model
如何解决这个问题? Aerich 似乎工作很酷...
对于任何看到这样错误的人:在模型列表中放置的不是相对模块名称,而是绝对名称。所以它将是 'app.items.models',而不是 'items.models'。适合我。
我有一个由 FastApi 使用 Tortoise ORM 和 aerich 迁移制作的项目。 Aerich 初始化已成功完成,所有迁移也已完成。在这里你可以看到我的 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 被放置:
TORTOISE_MODELS_LIST = ["purchases.models", "aerich.models"]
TORTOISE_ORM = {
"connections": {"default": DATABASE_URL},
"apps": {
"models": {
"models": TORTOISE_MODELS_LIST,
"default_connection": "default",
},
},
}
我在启动时没有问题,但是当我运行这个方法时:
@router.get("/get/latest", tags=["purchases"], response_model=List[Purchase_Pydantic],
description="Shows last 25 purchases")
async def get_latest_purchases():
purchases = await Purchase.all()[:25]
return Purchase_Pydantic.from_tortoise_orm(purchases)
我有这样一个奇怪的问题:
tortoise.exceptions.ConfigurationError: No DB associated to model
如何解决这个问题? Aerich 似乎工作很酷...
对于任何看到这样错误的人:在模型列表中放置的不是相对模块名称,而是绝对名称。所以它将是 'app.items.models',而不是 'items.models'。适合我。