Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Werkzeug和SQLAlchemy 0.5x会话_Python_Sqlalchemy_Werkzeug - Fatal编程技术网

Python Werkzeug和SQLAlchemy 0.5x会话

Python Werkzeug和SQLAlchemy 0.5x会话,python,sqlalchemy,werkzeug,Python,Sqlalchemy,Werkzeug,更新: 通过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_i

更新:

通过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:没有对象绑定到应用程序


注意:如果删除lambda,它将不起作用。

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

没有提到它,我正在玩Werkzeug lib和SA。我正在尝试采用SA sessionmaker()而不是SA教程建议的会话创建()。pocoo IRC的人帮了我,但我还是不明白到底是什么把戏。他们在sessionmaker()的末尾添加了“()”,现在它可以工作了。session=scoped_session(lambda:sessionmaker(bind=application.database_engine,autoflush=True,autocommit=False)),local_manager.get_ident)通过这种方式编写代码而不是听Ants Aasma,您为自己、代码读者和python解释器做了更多的工作。您还中断了您的
范围会话
。您的代码创建一个
sessionmaker
,然后调用它(返回一个会话),并将该会话以lambda形式传递给
作用域_会话
。因此,每次
作用域_session
尝试返回新会话时,它实际上返回相同的会话。省略
lambda
,并从sessionmaker调用的末尾删除()
scoped_会话(sessionmaker(*args))
没有提到它,我正在使用Werkzeug lib和SA。我正在尝试采用SA sessionmaker()而不是SA教程建议的会话创建()。pocoo IRC的人帮了我,但我还是不明白到底是什么把戏。他们在sessionmaker()的末尾添加了“()”,现在它可以工作了。session=scoped_session(lambda:sessionmaker(bind=application.database_engine,autoflush=True,autocommit=False)),local_manager.get_ident)通过这种方式编写代码而不是听Ants Aasma,您为自己、代码读者和python解释器做了更多的工作。您还中断了您的
范围会话
。您的代码创建一个
sessionmaker
,然后调用它(返回一个会话),并将该会话以lambda形式传递给
作用域_会话
。因此,每次
作用域_session
尝试返回新会话时,它实际上返回相同的会话。省略
lambda
,并从sessionmaker调用的末尾删除()<代码>作用域会话(sessionmaker(*args))