2014-01-13 4 views
0

стандарта/нормальная конфигурация SQLAlchemy сессии:Как проверить, настроен ли сеанс sqlalchemy?

from sqlalchemy.orm import scoped_session, sessionmaker 

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())) # 0 
engine = engine_from_config(config, 'sqlalchemy.') 

try: 
    DBSession.query('1').scalar() # 1 
except UnboundExecutionError: 
    pass # expected here - session is not bound 

DBSession.configure(bind=engine) # 2 

try: 
    DBSession.query('1').scalar() # 3 
except UnboundExecutionError: 
    pass # not expected here - session is bound ? 

любой попытка использовать несвязанный сеанс завершится broken? объекта сессии - использовать сессию, я должен создать новую с линией # 0.

Как я должен проверить, не связан ли объект сеанса и постоянно ли он остается одним объектом?

ответ

1

Вы должны хранить ссылку на свою фабрику сеансов.

Вместо

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())) # 0 
engine = engine_from_config(config, 'sqlalchemy.') 

вы могли бы сделать

engine = engine_from_config(config, 'sqlalchemy.') 
Session= sessionmaker(extension=ZopeTransactionExtension(), bind=engine) 
DBSession= Session() 

Everytime вам нужен сеанс, вы просто звоните Session(). Нет необходимости иметь синглтон.

Смежные вопросы