不索引Expando的动态属性

标签:Google App Engine, Python

Expando相比Model来说,多了个动态属性。为了少定义一些模型类,也许用动态属性比较方便,但这又牵扯到一个性能问题:动态属性无法像静态属性一样设置indexed=False。
对我的应用而言,大多数的静态属性是需要索引的,而动态属性则不需要,这便造成了浪费。

在GAE论坛提了半天也没等到好的解决办法,于是自己翻了下源码,发现Model类有个_unindexed_properties私有属性,这里面便是不需要索引的属性名了。

于是这样便可让动态属性不索引:

原来Expando和PolyModel类没有key参数

标签:Google App Engine

今天遇到个奇怪的问题,创建实体时设置key老失败,提示:
ReservedWordError: Cannot define property using reserved word 'key'. If you would like to use this name in the datastore consider using a different name like key_ and adding name='key' to the parameter list of the property definition.
可我看文档和读源码都发现有key这个参数,所以实在不明白哪错了。

最后想部署到服务器上试试是不是本地服务器的bug时发现,我用的不是Model类,而是Expando类。于是我改成Model,发现创建成功了…

读了源码后发现,虽然Expando和PolyModel类继承自Model类,但是key是Model类构造器的一个keyword参数,而Expando和PolyModel并没有处理…

不翻墙访问Google论坛的方法

标签:GFW, Google

把groups.google.com改成groups.google.de就行了,还有其他一些国家也行。

真受不了这操蛋的GFW,封锁政治信息就算了,知识封锁算什么啊,有种你焚书坑儒啊!

« 看看还有什么好玩意