Hi, oh, great solution, thanks for it and for advices. I'll use it.
Regards. On 27 Gru, 04:23, Daniel Holth <[email protected]> wrote: > grassoalvaro, > > It's completely unnecessary to maintain a shared threadlocal DBSession as a > module-level object. Delete it from your code and stop referencing it from > your views. You will find it is much easier to test and extend your code > without it. > > What I do instead is attach the SQLAlchemy Session for the current request > as request.db in a NewRequest listener (an event called right after Pyramid > creates a new Request object). A view method that needs the request > references it as request.db. Any other database-using function simply > accepts the session as an argument, or if you have an attached mapped object > you can access its session as sqlalchemy.orm.Session.object_session(obj). > > If you are willing to define foreign keys between packages in a disciplined > DAG by using class properties instead of strings: > > referenced_user_id = Column(Integer, ForeignKey(User.user_id), index=True) > > instead of > > referenced_user_id = Column(Interger, ForeignKey('User.user_id'), index=True) > > then it is also totally unnecessary to have a shared declarative_base(). I > like this because it makes it easy to call > somepackage.Base.metadata.create_all(bind=some_engine) to create only the > tables belonging to a > particular package. > > As an aside, you don't have to bind your metadata to a particular database > engine, either. SQLAlchemy works > great without any of those outdated patterns. > > Daniel -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/pylons-discuss?hl=en.
