ah good to know, I'm always wondering why people get confused about things like this...
On Jun 16, 2011, at 9:33 AM, Julian J. M. wrote: > 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. > -- 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.