I m disappointed

I already use session.query everywhere in my code.

Maybe this mechanism of "prefiltered select relation without dl all the
object (proxy)" will appear in a future version of SQL Alchemy (we already
can indicate the order_by, why not the select column)...

I can t use the defer query option because i need to obtain my object in
multiple ways. (entire object, only some attribute...)

What do you think of that (it s just an idea)?
Declare an object twice (one with all the attribute and one with only some
attributes).
In my relation, when i want to access to only some attribute i bind the
relation to the light object
It s a brutal method, i dont think if it can work...

2009/11/24 Conor <[email protected]>

> Christian Démolis wrote:
> > Cool, it's very powerful, it will allow me to save my Bandwidth
> > because i take just what i want and not the entire object.
> >
> > Thanks Conor
> >
>
> I think I gave you the wrong impression: association_proxy does not
> replace the original relation in any way. You are still using a full
> SELECT when using the association_proxy, because the association_proxy
> does its thing outside of SQL.
>
> If you need to pick and choose columns in the SELECT statement, I would
> advise doing that in the query:
> q = session.query(Utilisateur.Login)
> q = q.join(Utilisateur.verouillage)
> q = q.filter(Verouillage.id == some_id)
> logins = q.all()
>
> Alternatively, you can look into using the sqlalchemy.orm.defer query
> option to tell the query to NOT load a given column when loading a given
> class. More info at
> http://www.sqlalchemy.org/docs/05/reference/orm/query.html#query-options.
>
> -Conor
>
> > 2009/11/24 Conor <[email protected]
> > <mailto:[email protected]>>
> >
> >     Christian Démolis wrote:
> >     > Thx for your answer Thomas
> >     >
> >     > I want the attribute to not return the complete object just some of
> >     > the attribute of the other table.
> >     >
> >     > In my case Utilisateur has some attributes : Login, Nom, Prenom,
> ...
> >     > I dont want Verouillage.LeNomDuUtilisateur to return complete
> object
> >     > Utilisateur
> >     > I want it to return only Login attributes.
> >     >
> >     > Primaryjoin seems to work on condition (where clause) and not on
> >     > select condition (select ... in a query)
> >     >
> >     > Is it possible to limit selected attributes in the relation?
> >     >
> >
> >     You can use sqlalchemy.ext.associationproxy.association_proxy to
> >     turn a
> >     collection of related objects into a collection of related object
> >     attributes:
> >     _LeUtilisateur = relation(Utilisateur,
> >     backref=backref('verrouillage'))
> >     LeNomDuUtilisateur = association_proxy('_LeUtilisateur', 'Login')
> >
> >     -Conor
> >
> >     > 2009/11/24 Tefnet Developers - Tomasz Jezierski
> >     <[email protected] <mailto:[email protected]>
> >     > <mailto:[email protected] <mailto:[email protected]>>>
> >     >
> >     >     Dnia 2009-11-24, Wt o godzinie 11:18 +0100, Christian
> >     Démolis pisze:
> >     >     > Is it possible to put a filter on a relation in the
> >     declaration?
> >     >     >
> >     >     > Example :
> >     >     > LeNomDuUtilisateur = relation(Utilisateur,
> >     >     > filter_by=Utilisateur.Login, backref=backref('verrouillage'))
> >     >
> >     >     I'm not sure what exactly your example means.. but if you
> >     want extra
> >     >     filters on relation, you can change primaryjoin
> >     >
> >
> http://www.sqlalchemy.org/docs/05/mappers.html#specifying-alternate-join-conditions-to-relation
> >     >
> >     >     something like:
> >     >     LeNomDuUtilisateur = relation(Utilisateur,
> >     >     primaryjoin=sqlalchemy.and_(defaultjoincondition,
> >     >     yourextrafiltercondition), backref='verrouillage')
> >     >
> >     >
> >     >     Tomasz Jezierski
> >     >     Tefnet
> >     >     www.tefnet.pl <http://www.tefnet.pl> <http://www.tefnet.pl>
> >     >
> >
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<sqlalchemy%[email protected]>
> .
> 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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.


Reply via email to