Werkzeug 和 SQLAlchemy 0.5x 会话
更新:
浏览 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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 thelambda:
and pass the result ofsessionmaker()
directly toscoped_session()
.