我是 api 开发的新手,我正在尝试将 tortoise-orm 与 fastapi 一起使用,但 forlder 结构略有不同(对于用户模型,例如 src-> models->user.py):
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 中显示)
更新: 我能够通过从数据库配置文件中删除默认连接来运行该应用程序,但到目前为止没有显示相关字段
我找到了解决方案,有几件事需要: 1-从数据库设置中删除默认连接 2-放
Tortoise.init_models(["models.user","models.task","models.client"], 'models')
在每个 pydantic 模式文件的顶部(在创建 dypandic 模型之前)