ما هو GQL الخام للتحقق من مرجعية؟
-
21-09-2019 - |
سؤال
لدي النماذج التالية:
class Author(db.Model):
name = db.StringProperty()
class Story(db.Model):
author = db.ReferenceProperty(Author)
ما هو GQL الخام للعثور على جميع القصص من قبل مؤلف معين. في SQL العادية ، سوف أستخدم صلات لكنني لا أعتقد أن ذلك متاح في GQL.
تعديل:
"SELECT * FROM Story WHERE author = :1", "Shakespeare"
أرغب في تشغيل ما ورد أعلاه من بيانات مسؤول GAE> Data Viewer> Quepy the Datastore. أريد SQL الخام الذي يمكن أن يركضه شخص ما من قذيفة MySQL أو PSQL نموذجية.
المحلول
EDIT2: AH ، RAW-GQL للاستخدام في مراقبة البيانات ...
هذه طريقة واحدة:
1) قم بتشغيل هذا واحصل على رقم المعرف:
SELECT * FROM Author where name = 'shakespeare'
2) استخدام رقم المعرف من الاستعلام السابق ، قم بتشغيل هذا:
SELECT * FROM Story where author = key('Author', 12345)
تحرير: أخيرًا ، GQL RAW:
(أسهل طريقة: استخدم اسم خاصية Backreference الضمني ؛ في نموذج "ModelName_set".).
qry = GqlQuery("SELECT * FROM Author WHERE name = :1", "shakespeare")
shakespeare = qry.get()
shakespeare.story_set # this property now contains all Shakespeare's stories
أو
qry0 = GqlQuery("SELECT * FROM Author WHERE name = :1", "shakespeare")
shakespeare = qry0.get()
qry1 = GqlQuery("SELECT * FROM Story WHERE author = :1", shakespeare.key())
shakespeare_stories = qry1.fetch(10) # probably good to have some limit here
أنا أفضل بهذه الطريقة:
qry = Author.all()
qry.filter('name = ', 'shakespeare')
shakespeare = qry.get()
shakespeare.story_set # this property now contains all Shakespeare's stories
قد يكون من الضروري في بعض الأحيان أن تكون الطريقة الأكثر ارتباطًا ضرورية:
qry0 = Author.all()
qry0.filter('name = ', 'shakespeare')
shakespeare = qry0.get()
qry1 = Story.all()
qry1.filter('author = ', shakespeare.key())
shakespeare_stories = qry1.fetch(10) # probably good to have some limit here
لا تنتمي إلى StackOverflow