Hi all,

from a given class I'd like to determine which attributes are columns, not 
only physical columns present in the underlying table, but also those from a 
relationship(). The FAQ <http://www.sqlalchemy.org/trac/wiki/FAQ> seems to 
provide an answer ("What's the best way to figure out which attributes are 
columns, given a class"), but the proposed solution throws an 
"sqlalchemy.orm.exc.UnmappedClassError: Class '<pym.models.usrmgr.Principal 
object at 0x3a69c10>' is not mapped" error in my setup.

I'm using 0.7.2. with declarative classes, e.g.

DbBase = declarative_base()

class Principal(DbBase, PymMixin):
    __tablename__ = "principal"
    __table_args__ = {'schema': 'pym'}
    is_enabled      = Column(Boolean, nullable=False, default=False)
    ...

Does is matter that I try to read the attributes from a query?

qry = sess.query(Principal)
for p in qry:
    print p.display_name
# Determine columns in last looped entity
mapper = class_mapper(p)       #<---- this throws UnmappedClassError
attrs = set()
for prop in mapper.iterate_properties:
   if isinstance(prop, ColumnProperty):
       attrs.add(prop.key)
print "Columns:", attrs

Thanks for your help,
Dirk

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sqlalchemy/-/aDMx6g7syHsJ.
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