このモデルクラスを考えると
class Student(ndb.Model):
student_id = ndb.IntegerProperty(required=True)
student_name = ndb.StringProperty(required=True)
score=ndb.IntegerProperty(required=True)
def toJSON(self):
jsonData = {
"Student Id":str(self.student_id),
"Name":self.student_name,
"Score": str(self.score)
}
return json.encode(jsonData)
クエリを実行して、すべての学生名と各学生のスコアをJSON形式で返そうとしています。
私はすでにデータストアでクエリを実行し、を使用して各学生に関する情報を取得することができました
class ViewStudentDetailsHandler(webapp2.RequestHandler):
def get(self):
student_id=self.request.get('id')
callback = self.request.get('callback')
student = Student.get_by_id(student_id)
if student:
if (callback):
self.response.write(callback + '(' + student.toJSON() + ')')
else:
self.response.write(student.toJSON())
else:
if(callback):
self.response.write(callback + "(null)")
else:
self.response.write("No student with that id")
しかしALL
、生徒を取得する方法がわかりません。Googleの例を読んだことがありますが、それでも迷っています。今回はループが必要になることはわかっていますが、思いつくのはそれだけです。感謝しました。
クエリを実行する必要があり、1回のリクエストですべてを返すエンティティの数に応じて、不可能または実用的ではありません。次に、クエリでカーソルを使用する必要があります。
あなたは、NDBのドキュメントにクエリのセクションをお読みください- -彼らは何をすべきかについて明確にしているhttps://developers.google.com/appengine/docs/python/ndb/queries
すべてのアイテムに対する単純なクエリと、必要な詳細をJsonレコードのリストとして返すには、提供された関数またはクラスメソッドを呼び出すクエリのmapメソッドを使用して、次のようにします。エンティティのメソッドを期待していないため、toJSONを直接使用しません。
def callback(student):
return student.toJSON())
results = Student.query().map(callback)
toJSONメソッドをいじる必要があるかもしれません。実行すると、結果がどのようになるかを確認してください。results
また、明示的にjsonに変換する必要がある場合もあるため、クエリを実行した後まで、明示的なjson.encodeを延期することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加