python
  • view
  • couchdb
  • key
  • 2012-09-07 53 views 0 likes 
    0

    我一直在嘗試使用日期鍵檢索couchdb文檔,格式爲:yyyy mm ddCouchdb python - endkey似乎在視圖中沒有任何效果

    我想能夠檢索一系列的日期,使用couchdb-python中的視圖。我可以使用捲曲工作。例如:

    curl -X GET mylocation:5984/small/_design/Common/_view/date?startkey='"2012%2006%2004"'\&endkey='"2012%2006%2006"' 
    

    但是,使用Python中的view方法

    a=ui.db.view(docname, startkey='"2012%2006%2004"', endkey='"2012%2006%2006"') 
    a.rows 
    

    什麼都不產生。我已經試過:

    1. 使用startkey獨獨--works

    2. Endkey - 不起作用。

    3. 更改的鑰匙形式的複合項: 「YY」 中, 「mm」, 「DD」

    然後試圖檢索它們如下:

    a=ui.db.view(docname, startkey='\["12","06","04"\]', endkey='\["12","06","06"\]') 
    a.rows 
    

    同樣, startkey本身的作品,沒有使用endkey的作品。這也不能正常工作時捲曲,例如:

    curl -X GET mylocation:5984/small/_design/Common/_view/date?startkey='\["12","06","04"\]'&endkey='\["12","06","06"\]' 
    

    我再變的鑰匙是整數,而不是字符串 - 再次startkey作品什麼,用什麼endkey不起作用。

    我終於改變了關鍵,只是整數1 - > 10,仍然無法讓endkey做任何事情。

    我使用的是couchdb-python版本0.8。我正在調試這裏面的eric4(可能是這個問題?)

    回答

    0

    你不需要顯式編碼startkey/endkey查詢參數給JSON視圖調用。 CouchDB要求它們默認具有有效的JSON值。例如。如果你的視圖形式[「YY」中,「mm」,「DD」]返回複合鍵,那麼你的觀看請求將是下

    a = ui.db.view(docname, startkey=["12","06","04"], endkey=["12","06","06"])

    。注意,startkey和endkey具有列表類型值 - 相同作爲您的視圖功能鍵。

    關於curl請求:它不等價於你的db.view()請求:單引號作爲shell字符串轉義,但它們不會傳遞請求。因此,從捲曲CouchDB的實際要求是

    mylocation:5984/small/_design/Common/_view/date?startkey=["12","06","04"]&endkey=["12","06","06"]

    除非你有invalid_json錯誤響應,因爲JSON字符串應該用雙引號。

    無論如何,您可以查看CouchDB日誌(信息級別足以滿足您的需求),從Python程序和curl中將實際請求與CouchDB進行比較 - 它們會因情況而異。

    +0

    謝謝Kxepal。那麼,我只嘗試編碼,當我無法獲得非編碼嘗試工作。但我一定有其他問題,(我已經解決了)。你的解決方案似乎工作。我非常感激。 –

    相關問題