169 похожих чатов

Как вы ипользуете сессию SQLAlchemy? Храните в kwargs или инициализируете непосредственно

в сервисе?

28 ответов

110 просмотров

Чуть подробнее про оба варианта, не совсем понятно

Valentin Marchuk- Автор вопроса
Tishka17
Чуть подробнее про оба варианта, не совсем понятно

Ну можно сделать так: await dp.start_polling(bot, session=async_alchemy_session) Или внутри метода сервиса инициализировать: def add_user(): async with AsyncSession(engine) as session: async with session.begin(): session.add_all(users) Если есть пример использования aiogram + sqlalchemy будет круто

Valentin Marchuk
Ну можно сделать так: await dp.start_polling(bot,...

а engine во втором случае ты как передаешь?

Valentin Marchuk- Автор вопроса
Tishka17
а engine во втором случае ты как передаешь?

я пока никак не передаю, думаю каким способом сделать интеграцию

Valentin Marchuk
Ну можно сделать так: await dp.start_polling(bot,...

а как ты собрался в первом случае для каждого конкурентного хэндлера иметь свою сессию?

Valentin Marchuk- Автор вопроса
Tishka17
а как планировал?

когда юзал aiohttp использовал первый способ, также думал и сейчас

Valentin Marchuk
когда юзал aiohttp использовал первый способ, такж...

хз что значит первый способ в случае aiohttp

Valentin Marchuk- Автор вопроса
Valentin Marchuk- Автор вопроса

Хорошо, значит второй способ или он тоже не верен?

Valentin Marchuk
Хорошо, значит второй способ или он тоже не верен?

1. Ну я бы взял sessionmaker, а не голый энджин. Так можно сразу настроить что-нибудь 2. Как ты собрался энджин прокидывать?

Valentin Marchuk- Автор вопроса
Tishka17
1. Ну я бы взял sessionmaker, а не голый энджин. Т...

Ну я думал как global переменную сделать в начале файла и все. Я первый раз юзаю алхимию, может можешь сказать как мне изначально все правильно делать?

Valentin Marchuk
Ну я думал как global переменную сделать в начале ...

Никогда не юзай глобальные переменные :)

Valentin Marchuk
Ну я думал как global переменную сделать в начале ...

Я бы как и обычно прокинул сессию из мидлвари

Valentin Marchuk- Автор вопроса
Tishka17
Никогда не юзай глобальные переменные :)

ну в типизированных языках есть конструктор и там можно Dependecy Injection реализовать, если знаешь что это, в питоне я хз как такое сделать, чтобы в одном месте инициализировать и передвать инстанс, где он юзается

Valentin Marchuk
ну в типизированных языках есть конструктор и там ...

Ты несёшь какую-то чушь. DI в питоне ровно такой же. И конструктор есть

Valentin Marchuk- Автор вопроса
Tishka17
Я бы как и обычно прокинул сессию из мидлвари

типа ты бы так сделал в мидлваре: data["sessionmaker"] = sessionmaker ?

Valentin Marchuk
типа ты бы так сделал в мидлваре: data["sessionma...

вообще я бы сделал data["session"] = self.sessiomaker()

Tishka17
хз что такое "типизированный язык"

А самое главное как строгость типов языка влияет на возможность реализовать DI ¯\_(ツ)_/¯

Valentin Marchuk- Автор вопроса
Tishka17
хз что такое "типизированный язык"

Ну смотри есть C# SomeClassConstructor(ISession session) { _session = session } Тут я в startup файле говорю что ISession - singleton и во все констркуторы пердается один инстанс на всем времени работы программы, как такое в питоне делать я пока не знаю

Valentin Marchuk
Ну смотри есть C# SomeClassConstructor(ISession s...

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

Valentin Marchuk- Автор вопроса
Tishka17
Каким образом в конструкторы передастся твой сингл...

это под капотом DI, там есть resolver, который перед тем как создать инстанс класса передает в конструктор объекты, которые инициализируются по особым правилам (Singleton, Transient, Scope)

Valentin Marchuk
это под капотом DI, там есть resolver, который пер...

это не под капотом DI, это огород накрученный вокруг DI. как же бесит эта подмена понятий

Valentin Marchuk- Автор вопроса
Tishka17
это не под капотом DI, это огород накрученный вокр...

хорошо, так как это объясняет мой вопрос?

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта