我正在使用庫Cloudant來從Cloudant數據庫中收集文檔。每次運行python腳本時,我都會得到所有文檔,但我只想檢索從腳本的最後一次執行中添加的文檔,換句話說就是get_changes函數。Python - Cloudant獲取更改
我已經搜索了一個答案,但它似乎不是很容易找到。
Thaks尋求幫助,
Filippo。
我正在使用庫Cloudant來從Cloudant數據庫中收集文檔。每次運行python腳本時,我都會得到所有文檔,但我只想檢索從腳本的最後一次執行中添加的文檔,換句話說就是get_changes函數。Python - Cloudant獲取更改
我已經搜索了一個答案,但它似乎不是很容易找到。
Thaks尋求幫助,
Filippo。
使用changes()
方法。跟蹤最後一個序列號,並從那裏重新開始,只檢索未見的更改。
# Iterate over a "normal" _changes feed
changes = db.changes()
for change in changes:
print(change)
# ...time passes
new_changes = db.changes(since=changes.last_seq)
for new_change in new_changes:
print(new_change)
如果你也想在文檔的身體,你可以通過include_docs=True
。
見https://github.com/cloudant/python-cloudant/blob/master/src/cloudant/database.py#L458
如果你想捕捉只新增加(而不是所有更改),您可以創建沿線的在數據庫設計文檔過濾功能:
function(doc, req) {
// Skip deleted docs
if (doc._deleted) {
return false;
}
// Skip design docs
if (doc._id.startsWith('_design')) {
return false;
}
// Skip updates
if (!doc._rev.startsWith('1-')) {
return false;
}
return true;
}
並應用到飼料的變化:
new_changes = db.changes(since=changes.last_seq, filter='myddoc/myfilter'):
# do stuff here
,但可能是因爲容易簡單地得到在Python代碼中所有的變化和過濾器。
是,帖子後,我試圖塔方法,它工作正常。我必須編輯這個問題,因爲我想要做的是僅檢索在最後一個序列標識之後上傳的其他文檔。您發佈的腳本還會返回設計文檔和文檔修改,但我對這些結果不感興趣。順便說一句,謝謝你的回答 –
謝謝你這麼多xpqz,你的意見很有幫助 –