据我了解,使用标准MySQLdb
驱动程序时,您通常会使用一条with
语句来确保使用__exit__
.
是否有with
我需要 SQLAlchemysessions
或可能的等效语句engine
?或者对于 SQLAlchemy,关闭连接的手动超时是否足够?
据我了解,使用标准MySQLdb
驱动程序时,您通常会使用一条with
语句来确保使用__exit__
.
是否有with
我需要 SQLAlchemysessions
或可能的等效语句engine
?或者对于 SQLAlchemy,关闭连接的手动超时是否足够?
这是来自文档的引用:
大多数 Web 框架都包括用于建立与请求相关联的单个 Session 的基础设施,该 Session 会在请求结束时正确构建和拆除相应的拆除。此类基础设施部分包括 Flask-SQLAlchemy 等产品,用于与 Flask Web 框架结合使用,以及 Zope-SQLAlchemy,用于与 Pyramid 和 Zope 框架结合使用。SQLAlchemy 强烈建议尽可能使用这些产品。
在集成库不可用的情况下,SQLAlchemy 包含自己的“帮助”类,称为 scoped_session。
所以,看起来scoped_session就是你在说的。关于如何使用作用域会话的文档非常好。基本上,您定义何时打开会话以及何时关闭它(请参阅使用自定义创建的范围):
from my_web_framework import get_current_request, on_request_end
from sqlalchemy.orm import scoped_session, sessionmaker
Session = scoped_session(sessionmaker(bind=some_engine), scopefunc=get_current_request)
@on_request_end
def remove_session(req):
Session.remove()
希望有帮助。