解析python中的谷歌应用引擎对象

时间:2013-10-27 05:12:16

标签: python google-app-engine

是否可以像这样解析谷歌应用引擎对象......

objects = db.GqlQuery('SELECT * FROM Database WHERE item='random'')
memcache.add('object', objects, 3600)
if object =='some condition':
  #here can I do a query on 'objects' without using GqlQuery
elif object =='something else':
  #do a different query than the one above

我们的想法是将对象存储到memcache中,然后以不同的方式操作该对象。这是为了减轻数据存储区的读数。提前谢谢!

1 个答案:

答案 0 :(得分:2)

你可以而且每个人都会发现他们这样做了。但是你需要考虑很多事情。

  1. 目前您正在尝试存储查询对象而不是存储在memcache中的结果。代码中的objects是查询对象。使用run,fetch等来获得一些结果。

  2. 操作对象并存储在memcache中而不回写将意味着您将丢失数据等.memcache不是一个可靠的存储机制(它只是一个缓存),并且可以随时驱逐事物。 / p>

  3. 如果您的查询旨在返回单个结果,则通过键获取对象,与查询相比,它比memcache更有效且速度更慢。 (ndb将缓存为你获取 - 请参阅下一点)

  4. 看起来您刚开始使用appengine,如果您还没有现有的代码库,请先使用ndb而不是db。在我看来,这是一个更好的图书馆。 ndb在memcache和请求/实例中为你做了很多缓存(当使用get()时)。