sql >> Database teknologi >  >> RDS >> PostgreSQL

Tortoise ORM for Python returnerer ingen relationer mellem enheder (Pyndantic, FastAPI)

Problemet opstår, når man forsøger at generere pydantiske modeller før Tortoise ORM er initialiseret. Hvis du ser på basic pydantic eksempel vil du se, at alle pydantic_model_creator kaldes efter Tortoise.init .

Den oplagte løsning er at skabe pydantiske modeller efter Tortoise-initialisering, som sådan:


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

Event_Pydantic = pydantic_model_creator(Event)

Eller en mere praktisk måde, brug tidlig model init ved hjælp af Tortoise.init_models() . Sådan:


from tortoise import Tortoise

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

I tilfældet er hovedideen at opdele pydantic- og db-modeller i forskellige moduler, så import af den første ikke fører til oprettelse af den anden før tid. Og sørg for at kalde Tortoise.init_models() før du opretter pydantiske modeller.

En mere detaljeret beskrivelse med eksempler kan findes her .




  1. Postgres:filtrering af resultater ved hjælp af ARRAY_AGG og HAVING (i stedet for WHERE)

  2. SQL Server-tjektabel partitioneret

  3. Sådan replikeres INSERT/UPDATE/DELETE-sætninger ved hjælp af JPA og Hibernate

  4. JDBC MySQL-forbindelse ved hjælp af Unix Socket