On Tue, Aug 26, 2008 at 5:15 AM, Nicky <[EMAIL PROTECTED]> wrote:
>
> I apologize for my poorly posted previous message. Here is the whole
> thing hopefully.
>
> I have been going through the recipe and I do have working example.
>
> I have created a wrapper class for the session and to house the
> entities. I'd like to stitch the session back into the entity so that
> the entity has a query attribute once again. Is this possible (or
> better yet: easy)?
>
> from sqlalchemy.orm import scoped_session, sessionmaker
> from sqlalchemy import create_engine
> from model import *
>
> class dbFile:
> def __init__(self, filename , echo=False ):
> self.filename
> self.uri_db = 'sqllite:///' + filename
> self.engine = create_engine(self.uri_db, echo=echo)
> self.session = scoped_session(
> sessionmaker(autoflush=True,
> autocommit=True,
> bind=self.engine))
> for e in entities:
> dbFile.__dict__[e.__name__] = e
>
> def toXML(self):
> print "<db filename='%s'>" % (self.filename,)
> for e in entities:
> e.toXMLself.session)
> # I want to use :
> # e.toXML() # ie. a linked in session.
> print "</db>"
>
> if __name__ == '__main__':
> print "Here we go"
> # Fully pathed
> d1 = dbFile("/tmp/one.db")
> # Relatively pathed
> d2 = dbFile("two.db")
>
> # This works
> d2.session.query(d2.Scale).all()
>
> # I want this again:
> # d1.Scale.query.all()
> ^^^^^^^^^^^^^^^^^^^^^^^
> Any pointers?
You could easily assign e._descriptor.session but that wouldn't do
what you expect.
Well, what you want doesn't seem to be possible to achieve simply,
because d1.Scale refers to a class/entity and each entity can only be
"assigned" to one scoped session.
The only solution I see is to override __getattr__ on dbFile to
provide some "fake" classes/entities with a query attribute which'd
work that way. Those fake objects could even be instrumented in a way
they look like the real classes.
Hope it helps,
--
Gaƫtan de Menten
http://openhex.org
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"SQLElixir" 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/sqlelixir?hl=en
-~----------~----~----~----~------~----~------~--~---