Thank you for the insight. However, the thing is, while this Official Metadata is handled on an app-level basis, I'm looking for something that will span multiple apps. (I'm thinking of projects and apps as Django does, with projects being individual deployments and apps being distinct packages with their own models, views, and templates. Pylons might have a different perspective.) Do you think that having it live in a module within the actual framework will help? (i.e. myframework.sql) Or maybe should I create a module like that for every project? (i.e. mysite.sqlalchemy)
On Jan 12, 8:37 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: > On Jan 12, 2009, at 6:09 PM, PacSci wrote: > > > > > > > I've decided that for a WSGI framework I'm working on (based on > > Werkzeug, if that helps) that SQLAlchemy will be the official ORM - as > > in, the framework will handle the database side of the equation and > > the user just provides the models. However, I am trying to figure out > > how to make sure that the tables, all imported from distinct apps, all > > use the same metadata. Whatever solution I use, I want to make sure > > that: > > > - Every model is on the same, pre-bound metadata > > - Both table/object/mapper and ext.declarative are usable > > - It will run both on the Web and from command line tools > > > What I was thinking about doing was making every app have a "models" > > function like this: > > > def models(metadata, AlchemyObject) > > foo_table = Table("myapp_foos", metadata...) > > class Foo(object): pass > > foo_mapper = mapper(Foo, foo_table) > > class Bar(AlchemyObject): > > ... > > return [foo_mapper, Bar] > > > But that is ugly and non-Pythonic. Does anyone know of a way that I > > can make sure that every app is using the same metadata for its > > models, but doesn't put too much of a burden on the users? > > Why not just have a blank application setup include a file, such as > "meta.py" to quote from what Pylons does, which includes the > "official" MetaData object to be used ? You'd put the > declarative_base there, and potentially the engine/Session setup. A > good idea would be to check out a Pylons 0.9.7 application and see > what it does. You just have a few files that establish the official > entrypoints. > > > (PS: Is it possible to access the underlying tables and classes from > > mapper objects? I can't find anything about it in the docs.) > > the mapper has accessors on it for this stuff like class_ and > mapped_table. There's some others too which can be gleaned from the > source. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---