2012-08-27 65 views
1
DBSession = scoped_session(sessionmaker(bind=engine) 

#1 
DBSession.add(someobject) 
DBsession.commit() 

#2 
session = DBSession() 
session.add(someobject) 
session.commit() 

什麼之間#1#2區別?在SQLAlchemy中,DBSession和DBSession()有什麼區別?

我在金字塔的應用程序中使用#1,這兒有很多的「MySQL已經走了」例外

回答

2

沒有任何作爲的SQLAlchemy makes most Session methods also available as classmethods的ScopedSessions。這包括add()commit()

+0

session(= DBSession())是thread_local,而DBSession不是? – Tallmad

+0

'DBSession()'創建'DBSession'類的線程本地實例。在DBSession類中調用'add()'或'commit()'類方法會自動創建一個線程本地實例,前提是沒有任何方法存在並將方法調用路由到該實例。 – Simon

相關問題