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.

Reply via email to