Аз съм нов Google App Engine, така че следвах урока HelloWorld и Книгата за гости за Python като начало.
Сега бих искал да направя запитване за конкретен низ в моя клас, но не мога да намеря подходящия документ в документацията на GAE.
Имам следното:
class song_key(genre)
#We use genre as the key for a Song entity
return ndb.Key('Repository',genre)
class Singer(ndb.Model):
name = ndb.StringProperty()
birthday = ndb.DateProperty()
class Song(ndb.Model):
author = ndb.StructuredProperty(Singer)
title = ndb.StringProperty()
release = ndb.DateProperty()
dateAdd = ndb.DateTimeProperty(auto_now_add=True)
Бих искал да намеря всички песни, чийто автор == „Джон Ленън“, като приемем, че всички принадлежат към един и същ „жанр“
Опитах някои неща като:
q = Song.query((Song.author.name == "John Lennon'), ancestor=song_key(genre)).order(-Song.data)
results = q.all()
Но това очевидно не е начинът да направите това запитване.
Може ли някой да ми помогне да разбера заявките в Google App Engine? Какъв е добрият начин за постигане на такава stringProperty заявка?
Преминах през https://cloud.google.com/appengine/docs/python/ndb/queries или https://cloud.google.com/appengine/docs/python/datastore/queryclass, но имам някакъв проблем с разбирането на цялата концепция ^^
РЕДАКТИРАНЕ: Ето резултата от две заявки:
Query(kind='Song', ancestor=Key('Repository', 'Pop'), orders=...)
[Song(key=Key('Repository', 'Pop', 'Song', 5733953138851840), author=Singer(name=u'John Lennon'), date=datetime.datetime(2016, 2, 13, 22, 59, 31, 766373),title=u'Come Together'), Song(key=Key('Repository', 'Pop', 'Song', 5556931766779904), author=Singer(name=u'Bruno Mars'), date=datetime.datetime(2016, 2, 13, 16, 15, 58, 584174), title=u'Uptown Funk), Song(key=Key('Repository', 'Pop', 'Song', 6119881720201216), author=Singer(name=u'Katty Perry'), date=datetime.datetime(2016, 2, 13, 16, 15, 30, 915749), title=u'Teenage Dream')]
Имам три записа.
И когато искам да филтрирам по име на автор:
Query(kind='Song', ancestor=Key('Repository', 'Pop'), filters=FilterNode('author.name', '=', 'John Lennon'), orders=...)
[]
Празен списък!
Благодаря ти !