Pregunta

Tengo los siguientes modelos:

class Author(db.Model):
    name = db.StringProperty()

class Story(db.Model):
    author = db.ReferenceProperty(Author)

¿Cuál es la GQL prima para encontrar todas las notas a cargo de un determinado autor. En SQL normal, voy a usar combinaciones, pero no creo que está disponible en GQL.

Editar

Estoy buscando la manera de GQL prima, sé cómo hacerlo de la manera Pythonic. Por ejemplo algo como (la siguiente es probablemente totalmente equivocado):

"SELECT * FROM Story WHERE author = :1", "Shakespeare"

Quiero correr lo anterior a partir de los datos de administrador GAE> Visor de datos> Consultar el almacén de datos. Quiero que el SQL prima que alguien pueda ejecutar desde una MySQL o psql concha típica.

¿Fue útil?

Solución

Edit2: Ah, la prima-GQL para su uso en la técnica de espectador ...
Aquí está una manera:

1) Ejecutar este y obtener el número de identificación:

SELECT * FROM Author where name = 'shakespeare'

2) Utilizando el número de identificación de consulta anterior, ejecutar este:

SELECT * FROM Story where author = key('Author', 12345)

Edit: por fin, la GQL prima:
(La manera más fácil:. Utilice el nombre de la propiedad referencia inversa implícita; en la forma "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

o

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

Yo prefiero de esta manera:

qry = Author.all()
qry.filter('name = ', 'shakespeare')
shakespeare = qry.get()

shakespeare.story_set # this property now contains all Shakespeare's stories

La forma más involucrado veces puede ser necesario:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top