Как получить сеанс БД при инициализации приложения Pyramid - PullRequest
0 голосов
/ 05 мая 2020

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

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

1 Ответ

2 голосов
/ 21 мая 2020

Если вы используете резак для печенья, это довольно просто. Фабрика сеансов хранится в config.registry['dbsession_factory'], и вы можете взять ее и использовать для создания сеансов, когда захотите, в том числе во время конфигурации. Хороший способ сделать это - использовать временный диспетчер транзакций, но это не обязательно.

import transaction

from myapp.models import get_tm_session

def main(...):
    config.include('myapp.models')
    tm = transaction.TransactionManager(explicit=True)
    with tm:
        dbsession = get_tm_session(config.registry['dbsession_factory'], tm)
        # do stuff, the "with tm" will invoke commit if there are no exceptions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...