2014-03-01 49 views
0

我只花了幾個小時調試一些看起來很奇怪的事情。但是,我無法確定它是否是一個錯誤,或者我只是在做一些錯誤的事情。簡短版本,似乎如果我在NDB查詢和訂單上有不等式過濾器,它們必須是同一行。NDB查詢鏈接奇異性 - Order + Inequality?

注意:下面顯示的所有數據都是按順序創建的,儘管我在數據存儲中使用了日期,所以有些數據沒有微秒。

#Q1. Yields the correct results: 
q = BlogPost.query().filter(BlogPost.published_date > PUBLISHED_DATE_MIN).order(-BlogPost.published_date) 
for p in q.fetch(1000): 
    print "%s - %s" % (p.published_date, p.title) 

# 2014-03-02 21:49:25 - First 
# 2014-03-01 22:51:14.998963 - Should be 2nd 
# 2014-03-01 21:49:54.273152 - Should be Third 

這是我最初的。注:爲了是在單獨的行

q = BlogPost.query().filter(BlogPost.published_date > PUBLISHED_DATE_MIN) 
q.order(-BlogPost.published_date) 

for p in q.fetch(1000): 
    print "%s - %s" % (p.published_date, p.title) 
# 2014-03-01 21:49:54.273152 - Should be Third 
# 2014-03-01 22:51:14.998963 - Should be 2nd 
# 2014-03-02 21:49:25 - First 

的NDB查詢似乎僅僅是無序的或反向排序,然而,然後我刪除了不平等和我得到:

q = BlogPost.query() #.filter(BlogPost.published_date > PUBLISHED_DATE_MIN) 
q.order(-BlogPost.published_date) 

for p in q.fetch(1000): 
    print "%s - %s" % (p.published_date, p.title) 
# 2014-03-02 21:49:25 - First 
# 2014-03-01 22:51:14.998963 - Should be 2nd 
# 2014-03-01 21:49:54.273152 - Should be Third 

我看到這種行爲sdk控制檯以及遠程控制檯和實際appspot時,我部署我的代碼。這是一個錯誤(不太可能)或我錯過了什麼?

+2

您對'db'和'ndb'的混淆,請參閱下面的@Greg答案。您可能還想查看ndb備忘單 - 查詢部分https://docs.google.com/document/d/1AefylbadN456_Z7BZOpZEXDq8cR8LYu7QgI7bt5V0Iw/mobilebasic –

回答

4

當您運行q.order(-BlogPost.published_date)它創建並返回一個新的查詢,你不分配給任何東西。 您想擁有:

q = q.order(-BlogPost.published_date)