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.


Ответы (0 шт):