For the record, this was resolved. I didn't know how to set up the second session object.
Thanks! Mike On Jun 5, 2:06 pm, percious <[email protected]> wrote: > It's not too bad, but you have to do your own custom app setup, and > modify your init_model stuff to create multiple transaction manager. > > app_cfg.py: > > from webapp.model import init_model > from sqlalchemy import engine_from_config > from tg.configuration import AppConfig, Bunch > from pylons import config as pylons_config > > class MyAppConfig(AppConfig): > def setup_sqlalchemy(self): > """Setup SQLAlchemy database engine""" > users_engine = engine_from_config(pylons_config, > 'sqlalchemy_users.') > samples_engine = engine_from_config(pylons_config, > 'sqlalchemy_samples.') > config['pylons.app_globals'].sa_engine = users_engine > config['pylons.app_globals'].sa_users_engine = users_engine > config['pylons.app_globals'].sa_samples_engine = > samples_engine > > # Pass the engine to initmodel, to be able to introspect > tables > init_model(users_engine, samples_engine) > > base_config = MyAppConfig() > ... > > model/__init__.py: > > import model.users > import model.samples > > from model.users.mappers import * > from model.samples.mappers import * > > from zope.sqlalchemy import ZopeTransactionExtension > from sqlalchemy.orm import scoped_session, sessionmaker > > # Global session manager. DBSession() returns the session object > # appropriate for the current web request. > maker = sessionmaker(autoflush=True, autocommit=False, > extension=ZopeTransactionExtension()) > > DBSession = UsersDBSession = scoped_session(maker) > maker3 = sessionmaker(autoflush=True, autocommit=False, > extension=ZopeTransactionExtension()) > > SamplesDBSession = scoped_session(maker3) > from model.users.metadata import metadata as users_metadata > from model.samples.metadata import metadata as samples_metadata > > def init_model(users_engine, samples_engine): > """Call me before using any of the tables or classes in the > model.""" > > global UsersDBSession, SamplesDBSession, users_metadata, > samples_metadata > > UsersDBSession.configure(bind=users_engine) > SamplesDBSession.configure(bind=samples_engine) > > users_metadata.bind = users_engine > samples_metadata.bind = samples_engine > > This is sort of an off-the cuff answer, we will provide a better one > in the next documentation release. > > Come find me on IRC if you need some more help. > > cheers. > -chris > > On Jun 4, 10:31 am, Mike Driscoll <[email protected]> wrote: > > > Hi, > > > According to Mark Ramm's blog, supporting multiple databases is > > supposed to be easy > > (seehttp://compoundthinking.com/blog/index.php/2008/07/31/10-reasons-why-...). > > So where is the documentation that says how to do it?? > > > I "think" I need to put multiple sqlalchemy.url's in my > > development.ini file. But where oh where do I set up the SA engines > > at? The model's __init__ claims to support multiple databases too > > using MetaData, but it doesn't show where to bind the engine unless > > you're supposed to use the undocumented init_model function somehow. > > > I'm pretty sure the init_model came from Perkins. Maybe he can tell me > > where to put my call to the function and how to set it up for multiple > > databases? > > > That would be great! > > > Thanks, > > > Mike > > > On May 28, 12:47 pm, Mike Driscoll <[email protected]> wrote: > > > > Hi, > > > > I am having a little trouble wrapping my head around how to configure > > > my model's __init__.py file for multiple databases. I am working on an > > > application that accesses 3 databases and does reflection on select > > > tables from all three. > > > > I assume I need to comment out this line: > > > > metadata = DeclarativeBase.metadata > > > > and instead create three metadata instances based on MetaData(), > > > correct? > > > > Finally, as I understand it, I can use the "init_model" function to do > > > the mapping for some of them, but I am not understanding where to > > > create the engine object to pass to it. Also, once I have my tables > > > mapped in the function, what do I put in my real model file if > > > anything? > > > > Hopefully that stuff makes sense. I am using Python 2.5 and TG2 in a > > > virtualenv on Windows XP. > > > > Thanks! > > > > Mike > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TurboGears" 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/turbogears?hl=en -~----------~----~----~----~------~----~------~--~---

