带有tortoise-orm模型的fastapi早期初始化模型仍然没有找到

问题描述 投票:0回答:1

我是 api 开发的新手,我正在尝试将 tortoise-orm 与 fastapi 一起使用,但 forlder 结构略有不同(对于用户模型,例如 src-> models->user.py): project structure

main.py位于src文件夹中 问题是当我尝试在

register_tortoise
之前提前初始化Tortoise模型时,就像(模型关系未在Tortoise-ORM + FastAPI中显示) 仍然没有找到模型 当相关字段未包含在结果中时,主要问题就开始了,在这里我正在努力解决解决方案本身 数据库配置文件

import importlib
from fastapi import FastAPI
from tortoise import Tortoise
from tortoise.contrib.fastapi import register_tortoise



mdls=importlib.import_module("models")


#for mysql database
def get_mysql_db_uri(*, user, host, db_name):
    return f'mysql://{user}@{host}:3306/{db_name}'
#for sqlite database
def get_sqlite_db_uri( db_name_with_extension):
    return f'sqlite://{db_name_with_extension}'

def setup_database(app: FastAPI):
    Tortoise.init_models(["models"], 'models')
    register_tortoise(
        app,
        db_url="sqlite://testtort.db",
        modules={
            'models': [
                "models" 
            ],
            "default_connection": "default",
        },
        generate_schemas=True,
        add_exception_handlers=True,
        
    )
    Tortoise.init_models(["models"], 'models')# i've tryed Tortoise.init_models(["models.user","models.task","models.client"], 'models')

我也尝试过

modules={'models': ["models.user","models.task","models.client"],
如果我在两者中都使用 'models':["models"] ,应用程序会启动,但不会创建数据库,并且不会显示外键的相关字段

问题出在结构/模型路径中吗? 使用类似

src.models.user
的效果也不好 我尝试申请 (Fastapi/Tortoise早期模型初始化)的解决方案 (模型关系未在 Tortoise-ORM + FastAPI 中显示

更新: 我能够通过从数据库配置文件中删除默认连接来运行该应用程序,但到目前为止没有显示相关字段

model fastapi init tortoise-orm
1个回答
0
投票

我找到了解决方案,有几件事需要: 1-从数据库设置中删除默认连接 2-放

Tortoise.init_models(["models.user","models.task","models.client"], 'models')
在每个 pydantic 模式文件的顶部(在创建 dypandic 模型之前)

© www.soinside.com 2019 - 2024. All rights reserved.