Thank you very much. I'll try that. I was confused by this howto: http://turbogears.org/2.1/docs/main/MultipleDatabases.html They call declarative_base() for each each database... I thought I needed that for each AppProject instance...
Anyway, thanks agaon for the example. I'll let you know. Julian. On Thu, Jun 16, 2011 at 13:54, King Simon-NFHD78 <simon.k...@motorolasolutions.com> wrote: >> -----Original Message----- >> From: sqlalchemy@googlegroups.com [mailto:sqlalchemy@googlegroups.com] >> On Behalf Of Julian J. M. >> Sent: 16 June 2011 11:43 >> To: sqlalchemy >> Subject: [sqlalchemy] Accessing several databases >> >> Hello, >> >> I'm intending to use sqalchemy with orm for loading and storing my >> application's project files. Each sqlite database would be a project >> file, that will have several tables. >> >> I'd like to work with projects like this: >> >> project1=AppProject("/tmp/pr1.sqlite"); >> project2=AppProject("/tmp/pr2.sqlite"); >> >> item1 = project1.getItem(5) # item1 should be and object of a mapped >> class. >> item1.value="test" >> anotheritem = project1.getNewItem() >> anotheritem.value="this is new" >> # this should flush and commit the underlying session for project1, >> #modifying item with id 5, and adding a new one >> project1.commitEverything() >> >> item2 = project2.getItem(8) >> item2.value = "another test" >> project2.commitEverything() >> >> >> The problem i'm facing is how to create the engine, metadata, mapper, >> session, and the orm classes for each AppProject instance. >> >> I'm not sure if this is supported or even a good idea. >> >> Thanks, >> Julian J. M. >> > > I think this should be pretty easy with a separate SQLAlchemy Session > per project. You would define all your mappers and so on without any > reference to a specific database: > > ############################################################## > # your_db_module.py > import sqlalchemy as sa > import sqlalchemy.orm as saorm > from sqlalchemy.ext.declarative import declarative_base > > Base = declarative_base() > > class ProjectItem(Base): > __tablename__ = 'project_item' > id = sa.Column(sa.Integer, autoincrement=True, primary_key=True) > > # other columns etc. > > > > Then your AppProject class would look something like this: > > ############################################################## > # appproject.py > import sqlalchemy as sa > import sqlalchemy.orm as saorm > > from your_db_module import ProjectItem > > class AppProject(object): > def __init__(self, filename): > self.engine = sa.create_engine('sqlite://' + filename) > self.session = saorm.Session(bind=self.engine) > > def get_item(self, id): > return self.session.query(ProjectItem).get(id) > > > > Hope that helps, > > Simon > > -- > 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. > > -- http://www.julianmenendez.es -- 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.