There is one other way that seems to work (I am using declarative_base
() and too lazy to define Table() mappings):
-set the schema variable to app_globals in environment.py
app_globals.novadb_schema = app_conf.get('novadb_schema')
init_model(engine)
-move the ORM classes to a new module (essentially, move it out of
__init__.py so that the dependency is eliminated). Obviously, you'll
need to update the ORM class imports in your controllers and tests as
appropriate.
-
On Sep 8, 9:28 pm, Mike Orr <[email protected]> wrote:
> On Tue, Sep 8, 2009 at 1:17 PM, gsk<[email protected]> wrote:
>
> > Hi,
> > Newbie question: I am using SqlAlchemy for Postgresql backend. I have
> > setup a schema in the db where all the tables I need exist. So, I have
> > the ORM class as below where I would dynamically pass the value for
> > the schema:
>
> > class Foo(Base):
> > __tablename__ = 'foo_table'
> > __table_args__ = {'schema': someschema}
>
> > ...
>
> > I have put the db schema value in test.ini file hoping to use
> > pylons.config. But, apparently, Pylons config object is not yet setup
> > when model/__init__.py is initialized. Any suggestions on how I could
> > get around this? (I've hardcoded the schema at the moment but need to
> > parameterize as the dev and test environments use different postgresql
> > schema spaces)
>
> Er, I'm not sure if you can do that. The normal configuration is for
> environment.py to call init_model(), at which point the configuration
> is ready. (Although most init_model calls pass the needed values
> directly as arguments.) But in this case you're trying to set
> something at the class level before init_model is called. init_model
> could change the table object dynamically, if that's possible.
>
> The general workaround is to put the table definitions inside
> init_model, and have init_model assign them to global variables.
> People do that to map autoloaded tables to ORM classes.
>
> --
> Mike Orr <[email protected]>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---