0

更新:

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

注意:这不是关于 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:没有对象绑定到应用程序

PS如果删除lambda它将不起作用。

4

1 回答 1

4

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

于 2009-09-18T14:30:57.917 回答