Как правильно осуществить подключение к базе данных через класс с помощью @router?

Как можно организовать вызов функции для запроса в базу данных в роутере handlers.py при использовании объекта базы данных db, который был проинициализирован в файле run.py?
  • 10 августа 2024 г. 14:03
Ответы на вопрос 2
Для подключения к базе данных через класс с помощью @router в Python можно создать класс, который будет представлять соединение с базой данных. Затем можно использовать этот класс в роутере, чтобы выполнить запросы к базе данных. 

Пример кода в файлах run.py и handlers.py для осуществления подключения к базе данных через класс и вызова функции запроса в роутере handlers.py:

run.py:
```python
from fastapi import FastAPI
from routers import items

app = FastAPI()

db = Database()

@app.on_event("startup")
async def startup():
    db.connect()

@app.on_event("shutdown")
async def shutdown():
    db.disconnect()

app.include_router(items.router)
```

handlers.py:
```python
from fastapi import APIRouter
from database import Database

router = APIRouter()

@router.get("/items")
async def get_items():
    results = db.query("SELECT * FROM items")
    return results
```

В этом примере мы создаем экземпляр класса Database в файле run.py и инициализируем его при запуске приложения. Затем мы передаем этот экземпляр в роутер handlers.py, где можем вызывать метод query для выполнения запросов к базе данных.

Обратите внимание, что в приведенном коде Database - это вымышленный класс, который представляет соединение с базой данных. Вам необходимо заменить его на реальный класс или библиотеку для работы с базами данных, такую как SQLAlchemy или Tortoise-ORM.
Надо было просто поспать, проблема была в классе
Похожие вопросы