存档
Google App Engine对查询的限制
今天我在GAE进行数据查询时遇到了这样一个异常:First ordering property must be the same as inequality filter property, if specified for this query; received date, expected ctype 。到网络上搜索一下,发现这是Google App Engine对查询上的一个限制。经过一会儿时间的查找,我终于在在Google App Engine上查到该查询限制及其解决办法,办法就是“必须在采用其他排序顺序之前对不等式过滤器中的属性进行排序”。
下面记录一些Google App Engine查询机制的限制,以方便后期参考。索引查询机制的本质是对查询功能强加一些限制。
对一个属性进行过滤或排序需要确认该属性确实存在
属性的查询过滤条件或排序顺序也暗含了一个条件,即实体必须具有该属性的值。
数据存储区实体不需具有其他同类实体所具有的属性值。属性上的过滤器只能与具有该属性的值的实体相匹配。过滤器或排序顺序中所使用的不具有属性值的实体会从为该查询创建的索引中删除。
没有可与不具有属性的实体相匹配的过滤器
无法为缺少指定属性的实体执行查询。一种解决方法是创建一个固定的(已建模的)属性,默认值为 None
,然后为实体创建一个过滤条件,属性值为 None
。
Datetime--Python的基本日期时间类型
最近在学习Google App Engine日期时间属性时,尝试对Micolog这个基于Google App Engine的Blog后台的评论做了一个简单的修改页面,这样就可以使我们省下了去App Engine的后台去搜寻相关数据库再做修改的时间。编辑代码的过程倒是基本简单,新建一个编辑评论的页面(comment.html),再到admin.py中加入相关代码就可以了。不过,这个过程中倒是遇到一个小问题,python提交时间更新时会抛出一个异常来:
BadValueError: Property date must be a datetime
解决办法倒是很简单,将时间格式化成Datetime类型即可。
比如说:我在模板中对时间格式化为{{comment.date|datetz:"Y-m-d H:i:s"}}
(如:2010-07-05-20:00:12这样的形式),那么在程序代码中可以这样写做:
comment.date=datetime.strptime(commentdate,"%Y-%m-%d %H:%M:%S")
当然其他类型的格式化都是可取的。由于Python中对时间进行格式化的相关字符与Django模板中time过滤器所用的格式字符串略有区别,下面就分别对其进行简单介绍,希望对你有所帮助。
Micolog使用Windows Live Writer自定义发布时间
利用Windows Live Writer发表文章时,我们可以在发布栏上看到有自定义发布时间的按钮,但是在一般情况下,我们自定义的时间并不能产生效果,因为这个自定义的时间序列并没有传递。如果我们在RPC传递中增加发布时间的属性,那么自定义发布时间就能成功。这个自定义的时间就会覆盖掉自动生成的当前时间。传递给api_rpc.py的struct里就有一个dateCreated的值,它是这样的格式:YYYYMMDDTHH:mm:ssZ,如20091118T12:44:46Z 。在api_rpc.py里面处理一下这个值并赋值给entry里的date即可。代码如下,有中文注释的即为修改的行,很容易找到在哪里加入:
Micolog 0.6测试版出炉
刚到徐明的博客上逛了一趟,发现了好久不变的公告栏出现了如下语言:
博客公告
- micolog 0.6 beta测试
micolog在经过近一年的时间后又要向前进一步了,希望这个版本的micolog能够带来新的功能和安全性,让micolog尽量的接近wordpress风格(貌似其网站主题添加了评论分页插件),有兴趣的朋友可以去徐明的博客上打听喽!
用Word 2007发布博文到Google App Engine
我们知道,在Office 2007中的Word有在本地发布博文的功能,这次我就将通过Word 2007来测试发布文章的效果
首先,运行Word 2007程序,点击Office 图标发布博客,进入博客编辑页面。
出现注册博客的对话框,你当然可以选择立即注册。以下分别选择为服务供应商:Word Press,修改博客文章url为:http://appengine-id.appspot.com/rpc,(如我的博客就填写:http://blogyoume.appspot.com/rpc),用户名密码就填写你在Micolog后台自己填写的用户名和密码(可不是你的Gmail帐号名和密码哦),这样就可以配置完成了。下面你就可以真正使用Word 2007发布博客文章啦!
在你发布的文章中还可以插入你的文章类别哦,但标签貌似是不可以添加的了。
我来试试,看看效果如何!
给Micolog导航栏增加外链功能
Micolog的导航栏条目是通过page实现的,默认情况下不能添加外链。
可以通过下面方法增加外链功能:
1. 建一个go.py档案,内容如下:
import cgi2. 编辑app.yaml
import wsgiref.handlers
from google.appengine.ext import webapp
class MainPage(webapp.RequestHandler):
def get(self):
site = self.request.get('site')
self.redirect(site)
application = webapp.WSGIApplication([('/go', MainPage)], debug=True)
def main():
wsgiref.handlers.CGIHandler().run(application)
if __name__ == "__main__":
main()
增加
- url: /go
script: go.py
3. 登录后台,新建page,slug填上 go?site=http://www.wer.pp.ru
完成,很简单,这样就在导航栏增加一个wer.org.ru的外链了,比直接编辑模板来的方便
转自 axiang
最新评论