سؤال

لدي النماذج التالية:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top