Google app engine GAE数据存储:如何在db.DateTimeProperty()上设置筛选器

Google app engine GAE数据存储:如何在db.DateTimeProperty()上设置筛选器,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,嗨,我是GAE和Python新手,来自PHP和MySQL背景。 如果我的问题太天真,没有足够的家庭作业,我道歉 在我的应用程序中,我有许多主控形状,我想一个接一个地显示这些主控形状(一个将视图切换到列表模式的选项) 我的所有主模型都有一个名为ts的属性,保存时会自动填充当前时间戳 在我的主类上有一个方法get_rec,默认情况下它会获取最后保存的记录。单击导航按钮时,系统应选择上一个或下一个。为了实现这一点,我编写了这段代码 q = db.Query(modl) if pos == "prev"

嗨,我是GAE和Python新手,来自PHP和MySQL背景。 如果我的问题太天真,没有足够的家庭作业,我道歉

在我的应用程序中,我有许多主控形状,我想一个接一个地显示这些主控形状(一个将视图切换到列表模式的选项)

我的所有主模型都有一个名为ts的属性,保存时会自动填充当前时间戳

在我的主类上有一个方法get_rec,默认情况下它会获取最后保存的记录。单击导航按钮时,系统应选择上一个或下一个。为了实现这一点,我编写了这段代码

q = db.Query(modl)
if pos == "prev" :
    #ts is a string returned by JSON as 2012-07-03T14:19:36.817000
    q.filter("ts <", ts.replace("T", " "))
    q.order('-ts')
elif pos == "next" :
    q.filter("ts >", ts.replace("T", " "))
    q.order('ts')
else :
    q.order('-ts')
res = q.fetch(1)
return simplejson.dumps(res, cls=jsonEncoder)
q=db.Query(modl)
如果位置=“上一个”:
#ts是JSON返回的字符串,格式为2012-07-03T14:19:36.817000
q、 过滤器(“ts”,ts.replace(“T”,“ts”)
q、 订单('ts')
其他:
q、 顺序('-ts')
res=q.fetch(1)
返回simplejson.dumps(res,cls=jsonEncoder)
但返回的数据对象始终是最后一条记录。 顺便说一句,json发送的ts在时间前面有一个T,而在data viewer控制台上,我只能找到一个空格。我试着用空格代替T。我是否应该将日期对象作为datetime.datetime()而不是日期字符串传递

我是不是错过了什么


提前感谢

您需要将字符串转换为datetime-过滤器,我想是这样的

阅读第一帮助

使用strftime和strptime(格式化或解析)


请投赞成票

您需要将字符串转换为datetime-过滤器,我认为可以

阅读第一帮助

使用strftime和strptime(格式化或解析)


请投赞成票

嗯。这是我的错。MySQL总是将datetime存储为字符串,字符串比较很容易实现,但不在数据存储上。因为我最初怀疑datetime是否存储为python日期对象,所以我需要将其与datetime.datetime.StrTime(ts,“%Y-%m-%dT%H:%m:%S”)一起传递。GAE的版本不支持。%f这是另一个问题,我们可以轻松地用其他SO问题和答案来解决。好的。这是我的错。MySQL总是将datetime存储为字符串,字符串比较很容易实现,但不在数据存储上。因为我最初怀疑datetime是否存储为python日期对象,所以我需要将其与datetime.datetime.StrTime(ts,“%Y-%m-%dT%H:%m:%S”)一起传递。GAE版本不支持。%f这是另一个问题,我们可以轻松地用其他SO问题和答案解决。谢谢。GAE数据存储与传统SQL非常不同,我们需要一些时间来适应它。意识到这一点并更正了我的代码。谢谢。GAE数据存储与传统SQL非常不同,我们需要一些时间来适应它。意识到这一点并更正了我的代码。