1616
1717class DataBaseHelper :
1818 """
19- Вспомогательный класс для работы с Базой Данных
19+ Вспомогательный класс для работы с Базой Данных.
20+
21+ Помогает инициализировать соединение с Базой Данных, а так же
22+ работу с сессиями.
23+
24+ ## Инициализация:
25+ :string:`db_url` - Адресс базы данных.
26+ :string:`poolclass` - Пул типа :class:`sqlalchemy.pool.Pool`
27+
28+ ## Методы:
29+ :function:`DataBaseHelper.session_geter` - Получение генератора текущей сессии.
30+ :function:`DataBaseHelper.get_scoped_session` - Получение текущей сессии.
31+ :function:`DataBaseHelper.dispose` - Закрытые соединения.
32+
33+ ## Примеры:
34+ ```python
35+ from fastapi import FastAPI
36+ from contextlib import asynccontextmanager
37+ from config import db_connection, BaseModel
38+
39+
40+ @asynccontextmanager
41+ async def lifespan(app: FastAPI):
42+ # Инициализация соединения для создания таблиц.
43+ async with db_connection.engine.begin() as conn:
44+ await conn.run_sync(BaseModel.metadata.create_all)
45+ yield
46+ await db_connection.dispose()
47+
48+ app = FastApi(lifespan=lifespan)
49+ ```
2050 """
2151 def __init__ (self ,
2252 db_url : str = DATA_BASE_URL ,
2353 poolclass : Pool | None = None ,
2454 ) -> None :
55+ """
56+ Args:
57+ db_url (str, optional): Адресс Базы Данных. Defaults to DATA_BASE_URL.
58+
59+ poolclass (Pool | None, optional): Пул типа :class:`sqlalchemy.pool.Pool`.
60+ Defaults to None.
61+ """
2562 self ._db_url = db_url
2663 setup = dict (
2764 url = self ._db_url ,
@@ -42,16 +79,33 @@ def __init__(self,
4279 )
4380
4481 async def dispose (self ) -> None :
82+ """
83+ Закрытие соединения
84+ """
4585 await self .engine .dispose ()
4686
4787 def get_scoped_session (self ) -> AsyncSession :
88+ """
89+ Получение сессии
90+ """
4891 session = async_scoped_session (
4992 session_factory = self .session ,
5093 scopefunc = current_task ,
5194 )
5295 return session
5396
5497 async def session_geter (self ) -> AsyncGenerator [AsyncSession , Any ]:
98+ """
99+ Получение генератора сессии
100+
101+ Returns:
102+ AsyncGenerator[AsyncSession, Any]: Возвращает
103+ генератор с сессиями
104+
105+ Yields:
106+ Iterator[AsyncGenerator[AsyncSession, Any]]: Генератор подает
107+ сессии
108+ """
55109 session = self .get_scoped_session ()
56110 yield session
57111 await session .remove ()
0 commit comments