Ah I see, sorry, what I meant to ask was if there was a way to tell
the difference with _instances_ of orm objects
brendan
On Dec 8, 2007 7:32 PM, Michael Bayer <[EMAIL PROTECTED]> wrote:
>
>
> On Dec 8, 2007, at 2:09 PM, Brendan Arnold wrote:
>
> >
> > hmm strange, i tried this out with sqlalchemy version 0.4.1 but it
> > does not seem to work...
> >
> >>>> s.name
> > u'HALN01100601'
> >>>> isinstance(s.name, sqlalchemy.orm.PropertyLoader)
> > False
> >>>> s.targets
> > [<tcd_sample_database.model.samples.Target object at 0xb608dcac>]
> >>>> isinstance(s.targets, sqlalchemy.orm.PropertyLoader)
> > False
> >
> > both attributes were loaded by sqlalchemy. also,
> >
> >>>> getattr(s.materials, "direction")
> > Traceback (most recent call last):
> > File "<console>", line 1, in ?
> > AttributeError: 'InstrumentedList' object has no attribute 'direction'
> >
> >
>
> here is a code example illustrating my previous email:
>
> from sqlalchemy import *
> from sqlalchemy.orm import *
>
> from sqlalchemy.orm.properties import PropertyLoader
> from sqlalchemy.orm.sync import ONETOMANY, MANYTOONE, MANYTOMANY
>
> metadata = MetaData()
>
> t = Table('foo', metadata, Column('id', Integer, primary_key=True))
> t2 = Table('bar', metadata, Column('id', Integer, primary_key=True),
> Column('fooid', Integer, ForeignKey('foo.id')))
>
> class T(object):pass
> class T2(object):pass
>
> mapper(T, t, properties={
> 't2s':relation(T2)
> })
> mapper(T2, t2)
>
> prop = T.t2s.property
> if isinstance(prop, PropertyLoader):
> if prop.direction == ONETOMANY:
> print "onetomany"
> elif prop.direction == MANYTOONE:
> # etc
>
>
>
> > brendan
> >
> >
> >
> >
> > On Dec 3, 2007 9:30 PM, Michael Bayer <[EMAIL PROTECTED]>
> > wrote:
> >>
> >> id look at prop = MyClass.someattribute.property, use
> >> isinstance(prop,
> >> PropertyLoader) to determine a relation and not a scalar, combined
> >> with getattr(prop, "direction") == sqlalchemy.orm.sync.MANYTOMANY,
> >> ONETOMANY, etc. to get the type of join.
> >>
> >>
> >> On Dec 3, 2007, at 3:43 PM, Brendan Arnold wrote:
> >>
> >>>
> >>> hi there,
> >>>
> >>> i'd like a way to determine if an attribute of an orm object is:
> >>>
> >>> a:) a sqlalchemy generated list of objects (i.e. many-to-many)
> >>> b:) a single sqlalchemy joined object (i.e.one-to-many)
> >>> c:) a 'scalar' loaded from the database (i.e. a string, float,
> >>> integer)
> >>>
> >>> at present i'm copying the text generated by
> >>> 'type(orm_obj.joined_list)' to determine a: and a 'type(float, int
> >>> etc.)' for c:, whats left is b.
> >>>
> >>> this seems shakey, is there a better way? are there some 'types'
> >>> defined in sqlalchemy?
> >>>
> >>> brendan
> >>>
> >>>>
> >>
> >>
> >>>
> >>
> >
> > >
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---