ReferencePropertyをチェックする生GQLは何ですか?
-
21-09-2019 - |
質問
私は、次のモデルがあります:
class Author(db.Model):
name = db.StringProperty()
class Story(db.Model):
author = db.ReferenceProperty(Author)
特定の著者によってすべてのストーリーを見つけるために、生のGQL何ですか。通常のSQLでは、私は結合を使用しますが、私はそれがGQLで利用できないと思う。
の編集の
私は生のGQLの方法を探しています、私はそれをPython的な方法を行う方法を知っています。例えばのようなもの(以下はおそらく完全に間違っている):
"SELECT * FROM Story WHERE author = :1", "Shakespeare"
私は、データストアを照会> GAE管理データ>データビューアから上記を実行したいです。私は誰かが、典型的なMySQLやpsqlのシェルから実行することができ、生のSQLを望んでます。
解決
EDIT2:ああ、データ・ビューアで使用するための生-GQL ...
ここでは一つの方法です。
1)これを実行し、ID番号を取得します:
SELECT * FROM Author where name = 'shakespeare'
2)前のクエリからID番号を使用して、これを実行します:
SELECT * FROM Story where author = key('Author', 12345)
<時間>
編集:ついに、生GQL:
(最も簡単な方法:暗黙の後方参照のプロパティ名を使用します。フォーム「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