Perhaps I misunderstood what you are trying to do. Have you seen the
dynamic_properties() method of the Model class?

http://code.google.com/appengine/docs/python/datastore/modelclass.html
(at the bottom)

It's pretty hard to find - I flagged a doc defect ages ago -
http://groups.google.com/group/google-appengine-python/browse_thread/thread/eac9af0e9d6bb152/5138a6d61a59b749

Something easier (but less performant) than using the underlying API
is just to iterate over the object properties -

for object in objects_from_db:
  for property_name in object.dynamic_properties():
    print "%s:%s" % (property_name, getattr(object, property_name))

Treat the above as pseudocode, as I haven't actually run it, but you
get the idea.

On Apr 19, 11:59 am, Lynge <[email protected]> wrote:
> Many thanks, this should do nicely. I have already written a hack-job
> implementation to get around it, but will soon change it to something
> that makes use of this.
>
> On 16 Apr., 10:23, hawkett <[email protected]> wrote:
>
>
>
>
>
> > If you use the (undocumented) underlying datastore API you will get
> > datastore objects as lists of dictionary-like objects. It is the
> > higher level datastore API that converts these objects into Models.
> > Consequently, using this API is slightly faster as well. For example
>
> > from google.appengine.api import datastore
>
> > q = datastore.Query("SomeKind", {"name =": "someName"}, None, False,
> > True, None) # Kind, query, ?, keys_only, compile, cursor
> > q_results = q.Run()
>
> > for result in q_results:
> >   print result.key()
> >   print result['name']
>
> > The only mechanism I have found to understand this API is to review
> > the app engine code.  The documentation in the code is pretty
> > reasonable, but generally no examples.
>
> > On Apr 15, 1:17 pm, Lynge <[email protected]> wrote:
>
> > > Hi, I am using an Expando class and I want to sort it.
> > > It needs to be sorted according to a dynamically assigned property so
> > > it has o be done at runtime.
>
> > > I am using python and it could be done easily with something like:
>
> > >         dates = sorted(datelist, key=itemgetter('comp_date'))
>
> > > But since the objects returned from the datastore are not iterable
> > > this is impossible.
>
> > > So I thought that I would just create my own list of dicts and then I
> > > can iterate and sort it, but alas that is not possible either.
>
> > > I can iterate over the primary just fine
>
> > >         for date in datesfromdb:
> > >             datelist.append(dict(date))
>
> > > but no matter how I try to get the data out of the date object I have
> > > no luck.
> > > I dont want to name all the properties of the model since that would
> > > make it a big pain to update anything, but how then do I do it?
>
> > > Any help would be appreciated.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Google App Engine" 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 
> > athttp://groups.google.com/group/google-appengine?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Google App Engine" 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 
> athttp://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" 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/google-appengine?hl=en.

Reply via email to