Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何验证是否配置了sqlalchemy会话?_Python_Sqlalchemy - Fatal编程技术网

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

Python 如何验证是否配置了sqlalchemy会话?,python,sqlalchemy,Python,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

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 ?
任何使用未绑定会话的尝试都将以
断开?
会话对象结束-要使用会话,我必须创建一个第0行的新会话


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

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

而不是

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()
每次需要会话时,只需调用
session()
。没有必要有一个单身汉