Wie kann man GAE Query Objektinhalt und Struktur anzeigen?

Ich möchte die Struktur eines Query-Objekts ausdrucken, ähnlich wie Sie den Inhalt eines Diktats oder einer Liste an der interaktiven Python-Eingabeaufforderung ausdrucken können. Ich habe festgestellt, dass ich Probleme habe, zu visualisieren, wie die Datenstrukturen aussehen, was natürlich die Vorlage von Vorlagen-Argumenten viel härter macht.

Zum Beispiel ist hier eine sehr einfache UserProfil db-Klasse, und ich versuche, alle Profile auszudrucken und den Inhalt des zweiten Profils.

from google.appengine.ext import db from google.appengine.ext import webapp from google.appengine.api import users from google.appengine.ext.webapp.util import run_wsgi_app class UserProfile(db.Model): user = db.UserProperty(auto_current_user_add=True) name = db.StringProperty() class TestHandlerBasic(webapp.RequestHandler): def get(self): profiles = UserProfile.all() self.response.out.write('The whole profiles: ') self.response.out.write(profiles) self.response.out.write('<p>') self.response.out.write('Now, print out all profiles: <p>') for profile in profiles: self.response.out.write(profile.user) self.response.out.write('<br>') self.response.out.write('<p>') self.response.out.write('There are this many profiles: ') self.response.out.write(profiles.count()) self.response.out.write('<p>This is the second profile profiles[1]: ') self.response.out.write(profiles[1]) return application = webapp.WSGIApplication([(r'/testbasic', TestHandlerBasic),] debug=True) 

Ich bekomme diese Art von Leistung:

Die ganzen Profile:

Jetzt alle Profile ausdrucken:

Test@example.com
Ard@example.com

Es gibt diese vielen Profile: 2

Dies sind die zweiten Profilprofile [1]:

Nach der ersten Zeile bekomme ich <google.appengine.ext.db.Query object at 0x490bd10> und die letzte Zeile bekomme ich auch <models.UserProfile object at 0x490bb90> . Also, wie kann ich einen Dump des Abfrageobjekts oder Modellobjekts ausdrucken?

  • Rechenergebnis auf Server-Seite, aber Sitzungsdaten nicht pro Benutzer isoliert
  • Nicht in der Lage, csv-Datei vom FTP-Server in App-Engine zu laden
  • Verschieben von Blobstore zu GCS: Google App Engine Python
  • Auf GAE, wie kann ich ein Datum nach dem richtigen Client TimeZone zeigen?
  • Google App Engine: Wie kann ich programmgesteuert auf die Eigenschaften meiner Model-Klasse zugreifen?
  • Google-Endpunkte können nicht mehr über mehrere Dienste verfügen
  • ImportError bei der Verwendung von Google App Engine
  • Wie kann man den Inhaltstyp eines Bildes festlegen, bevor es auf den Blobstore gelegt wird?
  • One Solution collect form web for “Wie kann man GAE Query Objektinhalt und Struktur anzeigen?”

    Abfrageobjekte halten sich nicht alle db.Model Entitäten, die sie von get() oder fetch() . Also musst du UserProfile.all() für so etwas wie:

     profiles = UserProfile.all().fetch(1000) 

    Persönlich möchte ich die Klasse db.Model subklassen und füge ein paar Bequemlichkeiten für die Serialisierung meiner Modelle hinzu. Ich tue dies vor allem so kann ich schnell JSON Darstellungen von Entitäten, aber es ist ziemlich praktisch für Dumping / Inspektion sie auch.

    Hier ist ein Beispiel für meine BaseModel- Erweiterung, die __dict__ und __json__ Methoden zu Entitäten hinzufügt. Wenn Sie auch ein __repr__ hinzugefügt __repr__ , das die __dict__ Methode __dict__ , können Sie die Zeichenfolgendarstellung der Entitäten verbessern, wenn sie auf die Konsole gedruckt werden.

    Python ist die beste Programmiersprache der Welt.