作为 Pylons 用户,我现在正试图切换到 Pyramid,试图了解差异。
在 Pylons 中,我习惯于将 Session 定义myproj.model.meta
为:
Session = scoped_session(sessionmaker())
然后将其导入myproj.model
以定义模型等然后在应用程序中参考:
root = Session.query(MyModel).filter(...)...
现在在 Pyramid (pyramid_routesalchemy) 中使用默认模板,我像以前一样定义 Session (除了调用它DBSession
并添加扩展名):
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
但在views.py
我不直接使用它而是实例化它:
dbsession = DBSession()
root = dbsession.query(MyModel).filter(...)...
为什么?有什么区别?
此外,与金字塔有什么区别
import transaction
...
model = MyModel(name=u'root', value=55)
session.add(model)
session.flush()
transaction.commit()
到塔架
model = MyModel(name=u'root', value=55)
session.add(model)
session.commit()