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

Всем привет пытаюсь сделать удобный менеджер для обращения к сессии во

фласке, в этом чате все ругают Flask-SQLAlchemy, поэтому решил сделать свое исходя из документации алхимии

код:

class FlaskDB(Flask):
def __init__(self,
import_name: str,
static_url_path: Optional[str] = None,
static_folder: Optional[Union[str, os.PathLike]] = "static",
static_host: Optional[str] = None,
host_matching: bool = False,
subdomain_matching: bool = False,
template_folder: Optional[str] = "templates",
instance_path: Optional[str] = None,
instance_relative_config: bool = False,
root_path: Optional[str] = None,
sqlalchemy_engine: Optional[Engine] = None
):
super(FlaskDB, self).__init__(
import_name,
static_url_path=static_url_path,
static_folder=static_folder,
static_host=static_host,
host_matching=host_matching,
subdomain_matching=subdomain_matching,
template_folder=template_folder,
instance_path=instance_path,
instance_relative_config=instance_relative_config,
root_path=root_path
)
self._engine = sqlalchemy_engine

@contextmanager
def session(self) -> ContextManager[Session]:
session = Session(self._engine)
try:
yield session.begin()
except Exception as e:
self.logger.exception(e)
session.rollback()
else:
session.commit()
finally:
session.close()



обращаться к сессии можно вот так:

with app.session() as session:
session.execute(...)


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

поока что заметил единственный минус - current_app не видит .session

реквестирую критику

6 ответов

4 просмотра

что ты будешь делать когда нужно будет две сессии?

hightime- Автор вопроса
Tishka17
что ты будешь делать когда нужно будет две сессии?

у меня пока что ни в ондом приложении не нужно было такого

hightime
у меня пока что ни в ондом приложении не нужно был...

а у меня было. Нагруженные вьюхи ходили в ридонли реплику, а некоторые - в мастер на запись

hightime- Автор вопроса

если отставить в сторону вариант с двумя сессиями, а оставить достаточно простое приложение - этот вариант приемлимый?

https://t.me/ru_flask/95521 а чем тебе аткой вариант не нравится?

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

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

А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
5
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
Подскажите, почему в правом коде с1 дополняется до 8байт, а не до 4?
Sergey
8
что это и почему оно? executor.start_polling(bot, skip_updates=True, on_startup=on_startup, File "/usr/local/lib/python3.10/dist-packages/aiogram/utils/executor.py", line 4...
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
2
reply = (struct pam_response *)malloc(sizeof(struct pam_response)); reply[0].resp = strdup(password); Это так можно ображаться к структуре за указателем, помимо (*reply)...
Юлиан🦉 Колессиков ⛵️
14
#delphi кто-нибудь встречал официальное описание директивы {$ALIGN ON} (подчеркиваю - официальное, а не левый источник)? какой именно режим выравнивания включится? будут ли в...
Viktor Akselrod
14
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
Карта сайта