Для подключения к базе данных через класс с помощью @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.