Python 数据存储查询帮助

Python 数据存储查询帮助,python,google-app-engine,google-cloud-datastore,gql,Python,Google App Engine,Google Cloud Datastore,Gql,您好,我正在尝试列出播放列表,其中包含给定艺术家的歌曲,我有其关键字名称,我的型号为: **playlist** songs = db.ListProperty(db.Key) **Song** artist = db.ReferenceProperty(Artist,collection_name='songs') **Artist** Key Name = john-lennon 因此,播放列表包含歌曲键列表,歌曲包含对艺术家的引用 任何帮助都将不胜感激,到目前为止,我的查询一直都很简

您好,我正在尝试列出播放列表,其中包含给定艺术家的歌曲,我有其关键字名称,我的型号为:

**playlist**
songs = db.ListProperty(db.Key)

**Song**
artist = db.ReferenceProperty(Artist,collection_name='songs')

**Artist**
Key Name = john-lennon
因此,播放列表包含歌曲键列表,歌曲包含对艺术家的引用


任何帮助都将不胜感激,到目前为止,我的查询一直都很简单,所以我现在有点不知所措:-)

你不能用GAE进行这样的查询。数据存储不是关系数据库,也不做连接之类的事情

您所能做的最好的事情是获取所有艺术家为John Lennon的歌曲,然后找到这些歌曲的播放列表:

songs = GqlQuery('SELECT __key__ FROM song WHERE artist = :1', 'john-lennon')
playlists = GqlQuery('SELECT * FROM playlist WHERE songs IN :1', songs)
请注意,如果您有超过30首约翰·列侬的歌曲,即使这样也会有问题,正如文档所述:

注意:输入和!=操作员在幕后使用多个查询。例如,IN运算符为列表中的每个项目执行单独的底层数据存储查询。返回的实体是所有底层数据存储查询的叉积结果,并且是重复数据消除的。任何单个GQL查询最多允许30个数据存储查询