On Nov 16, 2012, at 1:05 AM, Gerald Thibault wrote:

> I have an association proxy set up to proxy an attribute from a parent to a 
> one to one child. That proxied column does not show when I do 
> class.__mapper__.iterate_properties. How would I go about adding a property 
> so the proxied columns are exposed via iterate_properties?
> 
> I'll add some code if necessary, but this seems like a pretty 
> straight-forward question that I probably just overlooked in the docs.

the mapper().iterate_properties accessor only refers to MapperProperty objects, 
which are all of those attributes that the mapper() associates with the 
database in some way.

the association proxy is not a MapperProperty - it is just a Python descriptor 
that has proxying behavior from one attribute to another.   It can in theory be 
used to proxy data between any two attributes, independently of SQLAlchemy 
(there might be a few bits of logic that look for SQLAlchemy-related attributes 
to help it decide how the proxying should be done, though).

If you're looking to iterate through the attributes associated with the class, 
the Python dir() function can get you this.  You can limit the results to those 
classes you need using isinstance():

def properties():
    for attr in dir(MyClass):
       if hasattr(attr, "property"):
            yield attr.property
      elif isinstance(attr, association_proxy):
           yield attr


-- 
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