Python. IКак лучше реализовать подключение к базе через SqlAlchemy
Как лучше использовать sessionmaker из sqlalchemy через класс? Как атрибут класса или же атрибут экземпляра класса? Код
class DbCommands:
session_fabric = sessionmaker(...)
async def set_user(self, user):
async with self.session_fabric as session:
await session.merge(user)
await session.commit()
Или же лучше использовать атрибут экземпляра класса?
class DbCommands:
def __init__(..., sessionmaker):
self.session_fabric = sessionmaker
async def set_user(self, user):
async with self.session_fabric as session:
await session.merge(user)
await session.commit()
Мне нравится 1й подход, потому что можно использовать собственный sessionmaker и в других местах не нужно создавать отдельно объкт sessionmaker, а можно просто создать его внутри самого класса через атрибут класса и в методах использовать атрибут класса. Как лучше использовать sessionmaker?
Какие будут минусы у первого(атрибут класса) подхода и какие будут минусы у второго(атрибут экземпляра) подхода? Поделитесь пожалуйста своим мнением. Не получится ли наплодить слишком много сессий или незакрытых транзакций? Не выдаст ли в итоге под нагрузкой какую-то ошибку?
Стек - sqlalchemy как ОРМ, asyncpg как драйвер для postgresql.