PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Tortoise ORM pour Python sans retour des relations d'entités (Pyndantic, FastAPI)

Le problème se produit lorsque l'on essaie de générer des modèles pydantic avant Tortoise ORM est initialisé. Si vous regardez pydantic de base exemple, vous verrez que tous les pydantic_model_creator sont appelés après Tortoise.init .

La solution évidente est de créer des modèles pydantiques après l'initialisation de Tortoise, comme ceci :


await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()

Event_Pydantic = pydantic_model_creator(Event)

Ou d'une manière plus pratique, utilisez early model init au moyen de Tortoise.init_models() . Comme ceci :


from tortoise import Tortoise

Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)

Dans ce cas, l'idée principale est de diviser les modèles pydantic et db en différents modules, de sorte que l'importation du premier ne conduise pas à la création du second à l'avance. Et assurez-vous d'appeler Tortoise.init_models() avant de créer des modèles pydantic.

Une description plus détaillée avec des exemples peut être trouvée ici .