Google App Engine Python,GQL,从数据存储中仅选择一列
我想从一个数据表中只提取一列数据。
我有一个书籍模型,里面有 id、key、标题、作者、ISBN 和价格这些信息。
如果我用这个命令:db.GqlQuery('SELECT * FROM Books'),我可以获取所有的信息,但如果我只想要标题的话,应该怎么做呢?
我尝试了很多人推荐的方法,但似乎都没有效果。
如果有人能帮忙,我会非常感激。谢谢!
2 个回答
2
在数据存储的设计中,有一个考虑就是在某些地方使用冗余,而不是像在关系型数据库中那样。
举个例子,你的代码可以有一个“标题”的实体,每当添加一本书时就把书名加进去,每当删除一本书时就把书名删掉。这样你就可以查询“标题”实体,获取所有书名,而不需要加载所有的书。
你的代码需要遵守这些规则,不过通过一些Python的封装,这并不难(也就是说,把所有对书籍或标题的访问放在一个类里面,这个类的方法会确保你数据之间的关系是正确的)。
我强烈建议你阅读一些关于数据存储的更高级的主题,可以在这里找到。
人们常常把领悟的时刻称为“我如何学会不再担心,反而爱上数据存储”。这基本上是指人们从一种正常的思维方式转变为一种分布式/冗余的视角,在这种视角下,你可以随意将数据扔给数据存储,它会处理好这些数据。
3
你不能这样做。GQL 不是 SQL,数据存储也不是关系型数据库。一个实体是作为一个完整的序列化协议缓冲区存储的,无法只获取实体的一部分;你必须把整个实体都解码出来。