Werkzeug 和 SQLAlchemy 0.5x 会话

发布于 2024-08-05 01:57:58 字数 777 浏览 1 评论 0原文

更新:

浏览 Werkzeug 链接文本 教程,获得使用 sessionmaker 创建 SQLAlchemy 会话的堆栈() 而不是建议的 create_session() 。

注意:这不是关于 SA,而是关于 Werkzeug。

Werkzeug 教程:

session = scoped_session(lambda: create_session(bind=application.database_engine,
    autoflush=True, autocommit=False), local_manager.get_ident)

我问如何使用 sessionmaker() 实现相同的目标:

结果 #pocoo RCI 的人帮我解决了这个问题:

session = scoped_session(lambda: sessionmaker(bind=application.database_engine)(),
    local_manager.get_ident)

在 sessionmaker(**args) 末尾没有 () 它保留了给我一个错误:

RuntimeError:没有对象绑定到应用

程序如果删除lambda,它将不起作用。

Updated:

Going through the Werkzeug link text tutorial, got stack with creating SQLAlchemy session using sessionmaker() instead of create_session() as recommended.

Note: it is not about SA, it is about Werkzeug.

Werkzeug tutorial:

session = scoped_session(lambda: create_session(bind=application.database_engine,
    autoflush=True, autocommit=False), local_manager.get_ident)

I asked how to achieve the same using sessionmaker():

As a result guys from #pocoo RCI helped me with this:

session = scoped_session(lambda: sessionmaker(bind=application.database_engine)(),
    local_manager.get_ident)

without () at the end of sessionmaker(**args) it kept giving me an error:

RuntimeError: no object bound to application

P.S. if delete lambda it will not work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云淡月浅 2024-08-12 01:57:58

sessionmaker() 返回一个会话工厂,而不是会话本身。 scoped_session() 采用会话工厂作为参数。因此,只需省略 lambda: 并将 sessionmaker() 的结果直接传递给 scoped_session() 即可。

sessionmaker() returns a session factory, not a session itself. scoped_session() takes a session factory as argument. So just omit the lambda: and pass the result of sessionmaker() directly to scoped_session().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文