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