I've traced it further, and it's an odd problem.
This syntax works fine:
memberProfile = self.session.query(MemberProfile).filter
(MemberProfile.memberID.in_(memberid)).order_by
(MemberProfile.memberID)
memberProfile = memberProfile.filter(MemberProfile.city ==
'Jamaica')
memberProfile = memberProfile.filter(MemberProfile.zip ==
"11432")
memberProfile = memberProfile.order_by
(MemberProfile.memberID).all()
But this causes the error:
for field,value in fields.iteritems():
internal_field = getattr(MemberProfile,field)
memberProfile = memberProfile.filter(internal_field ==
value)
memberProfile = memberProfile.order_by
(MemberProfile.memberID).all()
A trace reveals what I expect:
(Pdb)
> /var/www/ReST/models/MemberInfo.py(65)GET()
-> if fields:
(Pdb)
> /var/www/ReST/models/MemberInfo.py(66)GET()
-> memberProfile = self.session.query(MemberProfile).filter
(MemberProfile.memberID.in_(memberid))
(Pdb)
> /var/www/ReST/models/MemberInfo.py(67)GET()
-> for field,value in fields.iteritems():
(Pdb)
> /var/www/ReST/models/MemberInfo.py(69)GET()
-> internal_field = getattr(MemberProfile,field)
(Pdb) p field
'city'
(Pdb) p value
'Jamaica'
(Pdb) n
> /var/www/ReST/models/MemberInfo.py(70)GET()
-> memberProfile = memberProfile.filter(internal_field == value)
(Pdb) p MemberProfile.city
<sqlalchemy.orm.attributes.InstrumentedAttribute object at 0xb7796d8c>
(Pdb) p internal_field
<sqlalchemy.orm.attributes.InstrumentedAttribute object at 0xb7796d8c>
A "getattr" returns the same address as the MemberProfile.city. So
this should work, and worked perfectly when I inherited one class from
the other.
Here is the error:
File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/
sqlalchemy/orm/sync.py", line 28, in clear
raise AssertionError("Dependency rule tried to blank-out primary
key column '%s' on instance '%s'" % (r, mapperutil.state_str(dest)))
AssertionError: Dependency rule tried to blank-out primary key column
'member_profiles.memberID' on instance '<MemberProfile at
0x-488574b4>'
Very strange. The object returned by getattr seems the same. Am I
missing something?
Thanks once again,
Gloria
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---