如何验证是否配置了sqlalchemy会话?

2024-09-24 22:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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?session对象结束-要使用session,我必须用#0行创建一个新的会话。在

我应该如何检查会话对象是否未绑定并且始终只保留一个对象?在


Tags: 对象fromconfigsqlalchemysessionpassqueryengine
1条回答
网友
1楼 · 发布于 2024-09-24 22:18:41

您应该保留对会话工厂的引用。在

而不是

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

你可以的

^{pr2}$

每次需要会话时,只需调用Session()。没必要有单身汉。在

相关问题 更多 >