【问题标题】:How to query google app engine blobstore by creation date and order the results如何按创建日期查询 google app engine blobstore 并对结果进行排序
【发布时间】:2011-08-21 00:00:06
【问题描述】:

我需要从 GAE blobstore 检索最新的文件集。目前我的代码说

nDays = 10 #this is set at run time
gqlQuery = blobstore.BlobInfo.gql("WHERE filename = :1 ORDER BY creation DESC",<filename>)
cursor = gqlQuery.fetch(nDays)

当我通过调用 cursor[i].creation 迭代并打印出数据时,它不会给我从今天开始的最后 nDays。例如,今天是 8 月 20 日。我希望它能给我从 8 月 11 日到 8 月 20 日的数据(我每天都有一个文件)。相反,它给了我几天前 8 月 13 日的数据。

如果我删除 gqlquery 中的 ORDER BY,它会正确返回所有结果(未排序)。 如果我使 gqlQuery 可迭代,以便我说类似

for filename in gqlQuery:
    print filename.creation

它只打印从 8 月 13 日到几天(大约 8 天)。我知道事实上直到今天还有数据。从 GAE,我可以查看数据。此外,当文件上传到 blobstore 时,Google 会自动标记创建日期。

有人知道我错过了什么吗?

【问题讨论】:

    标签: google-app-engine blobstore


    【解决方案1】:

    我也可能会漏掉一些东西,但是您查询中“filename = :1”的目的是什么?

    这对我的 blobstore 运行正确:

    gqlQuery = blobstore.BlobInfo.gql("ORDER BY creation DESC")
    blobs = gqlQuery.fetch(5)
    self.response.headers['Content-Type'] = 'text/html'
    self.response.out.write("Lasts blobs<br>")
    for blob in blobs:
        self.response.out.write(blob.filename + "<br>")
    

    弗洛伦特

    【讨论】:

    • 我有 2 种类型的文件 , 所以 filename = :1 是选择其中一个文件集。如果我不指定文件名,那么您的代码将有效(我之前已经尝试过并且有效)。我做了一些进一步的调查,似乎在按文件名过滤之前添加“ORDER BY”对结果集起作用,而不是在应用过滤器后对结果集进行处理
    猜你喜欢
    • 2015-03-31
    • 2013-06-20
    • 2017-12-05
    • 2018-04-25
    • 2017-02-05
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    相关资源
    最近更新 更多