LINUX.ORG.RU

sqlalchemy session in Process

 , ,


0

1

Из [1] следует, что сессия Session() д.б. едина в приложениии. А что делать, если в основной программе нужно открыть сессию и в отдельном процессе-демоне нужно открыть сесссию к одной и тойже БД.

[1] https://docs.sqlalchemy.org/en/13/orm/session_basics.html

Ответ на: комментарий от gruy

похоже я не допер почему вот это неверный путь - для каждого действия своя сессия? ведь по ходу работы программы у меня может и не быть возможности запусть друг за другом ThingOne и ThingTwo.

### this is the **wrong way to do it** ###

class ThingOne(object):
    def go(self):
        session = Session()
        ...

class ThingTwo(object):
    def go(self):
        session = Session()
        ...

def run_my_program():
    ThingOne().go()
    ThingTwo().go()

а сессия для двух классов (действий) это true путь

def run_my_program():
    session = Session()
    try:
        ThingOne().go(session)
        ThingTwo().go(session)

Если создание и закрытие сессий в прямом коде проблема, то в потоках или процесса она не пропадет.

scientistpython ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.