Ich schreibe mein erstes Projekt in Fastapi und kämpfe ein bisschen. Insbesondere bin ich mir nicht sicher, wie ich in meiner App einen Asyncpg -Verbindungspool verwenden soll. Derzeit habe ich so.pgpool = None
async def get_pool():
global pgpool
if not pgpool:
pgpool = await asyncpg.create_pool(dsn='MYDB_DSN')
return pgpool
< /code>
Und dann verwende ich in einzelnen Dateien das Get_Pool als Abhängigkeit. < /p>
@router.post("/user/", response_model=models.User, status_code=201)
async def create_user(user: models.UserCreate, pgpool = Depends(get_pool)):
# ... do things ...
< /code>
Zunächst jeder Endpunkt, den ich habe, verwendet die Datenbank. Daher erscheint es albern, dieses Abhängigkeitsargument für jede einzelne Funktion hinzuzufügen. Zweitens scheint dies ein Kreisverkehr, Dinge zu tun. Ich definiere eine globale, dann definiere ich eine Funktion, die diese globale zurückgibt, und dann injiziere ich die Funktion. Ich bin mir sicher, dass es eine natürlichere Art gibt. < /P>
Ich habe gesehen@app.on_event("startup")
async def startup():
app.pool = await asyncpg.create_pool(dsn='MYDB_DSN')
< /code>
Aber es funktioniert nicht, wenn ich mehrere Dateien mit Routern habe. Ich weiß nicht, wie man auf das App -Objekt aus einem Router -Objekt zugreift. < /p>
was fehlt mir?
Wie stelle ich eine persistente Datenbankverbindung in Fastapi her? ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post