Sqlalchemy o我需要以某种方式将创建引擎放入singleton,使其与singleton类似?

Sqlalchemy o我需要以某种方式将创建引擎放入singleton,使其与singleton类似?,sqlalchemy,Sqlalchemy,在服务器上,我使用Tornado和SQLAlchemy的组合(也许SQLAlchemy不是异步服务器的最佳选择,但它是临时的),我将项目和处理程序拆分为10个文件/模块。 在每个模块中,我都使用session=session()和session查询数据库 每个模块的公共部分如下所示 ... import tornado.ioloop engine = create_engine(DB_URL, echo=False, pool_size=100, pool_recycle=3600) Sess

在服务器上,我使用Tornado和SQLAlchemy的组合(也许SQLAlchemy不是异步服务器的最佳选择,但它是临时的),我将项目和处理程序拆分为10个文件/模块。 在每个模块中,我都使用
session=session()
session
查询数据库

每个模块的公共部分如下所示

...
import tornado.ioloop

engine = create_engine(DB_URL, echo=False, pool_size=100, pool_recycle=3600)
Session = sessionmaker(bind=engine)


class BaseHandler(tornado.web.RequestHandler):
 ....
我需要怎么设置吗

engine = create_engine(DB_URL, echo=False, pool_size=100, pool_recycle=3600)
Session = sessionmaker(bind=engine)
要像singleton一样,不要在每个模块中都创建会话,或者这是做事情和创建会话的好方法。

您可能希望使用它,它本质上充当线程本地singleton,使用提供的factory函数按需创建会话

在所有其他模块导入的一个模块中,您编写:

engine = create_engine(DB_URL, echo=False, pool_size=100, pool_recycle=3600)
session_factory = sessionmaker(bind=engine)
Session = scoped_session(session_factory)
# or make it a Tornado Application property
然后使用
会话
作为显式工厂:

session = Session()
session.query(...)
或使用隐式方法委派:

Session.query(...)

谢谢我是否应该将
session
变量放入一个函数中,作为单例对象返回?不知何故,
session
类没有进入全局范围。我的应用程序是作为更大应用程序的一部分捆绑的。是否可以将会话范围仅局限于我的应用程序?