0
更新時間:WERKZEUG和SQLAlchemy的0.5倍會話
通過WERKZEUG link text教學走向,得到了疊加使用sessionmaker()創建的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結束時(**參數)它不斷給我一個錯誤:
RuntimeError:沒有綁定到應用程序的對象
P.S.如果刪除lambda它將無法正常工作。
沒有提到它,我正在和Werkzeug lib和SA玩。我試圖採用SA sessionmaker()而不是session_create(),因爲SA Tutorial建議這樣做。 來自#pocoo IRC的夥計幫助我,但我仍然沒有得到它的訣竅。他們在sessionmaker()的末尾添加了「()」,現在它可以工作。 – VVP 2009-09-18 16:05:24
你正在爲自己,你的代碼的讀者和你的python解釋器做更多的工作,其中包括:這樣寫而不是聽螞蟻Aasma。你也打破了你的'scoped_session'。你的代碼創建一個'sessionmaker',然後調用它(返回一個會話),並將這個會話在一個lambda中傳遞給'scoped_session'。所以每次'scoped_session'試圖返回一個新的會話,它實際上返回相同的會話。省略'lambda',並從sessionmaker調用結束時刪除()。 'scoped_session(sessionmaker(*參數))' – jcdyer 2009-09-18 18:34:14