Похожие чаты

У нас тут случилась дискуссия по тому, как располагать engine

и sessionmaker

одна сторона говорит, что надо делать их отдельными объектами и располагать рядом в одном модуле, а потом переиспользовать там, где вызывается.
при этом ссылается на https://docs.sqlalchemy.org/en/20/orm/session_basics.html#when-do-i-make-a-sessionmaker

другая стороная, предлагает альтернативу:
некий класс DbAPI
в котором упакованы engine и sessionmaker
типа как-то так

class DbApi:
def __init__(self, conf: Settings, *, echo: bool = False):
self.connection = conf.connection
self.engine: Optional[AsyncEngine] = self.get_engine(echo=echo)

def get_engine(self, **kwargs) -> AsyncEngine:
return create_async_engine(self.connection, echo=kwargs.get('echo', False), future=True)

def get_session(self) -> sessionmaker:
return sessionmaker(
self.engine,
class_=AsyncSession,
expire_on_commit=False,
)


db_api = DbApi(CONF)

и потом юзать db_api, там где надо, ссылаясь, что это ооп и особо не противоречит доке (ведь все вместе лежит)


Коллеги, рассудите?

2 ответов

11 просмотров

я бы сказал ни та ни другая стороны не правы

у нас в проекте второй вариант и это ни разу не ооп, а протекания абстракций) в некоторых моментах использовать больно, не советую. первый подход лучше

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Hi. Do we have a raid bot? Why nobody doing raids on X? Even RH mentioned this and nobody paying attention...whats the channel for hex memes? If mods cant run raids just insta...
H
31
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
блеать, почему так?? где в роутере это исправляется?
Арсен Маньяков 🇦🇲
16
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
🌊 Ocean Nodes Dashboard Update 🚀 Hey, Oceaners! First off, a massive round of applause 👏to all of you for the amazing engagement since we launched Ocean Nodes. In just a few ...
KreigDK | Never DM first🌊
3
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
люди, которые используют flameshot, к вам вопрос. Можно-ли поставить хоткей на создание скриншота? В программе есть отдел "горячие клавиши", но там все для редактирования, скр...
ThunDer104
11
Карта сайта