2017-06-21 1 views
0

私はCloudantデータベースからドキュメントを収集するためにCloudantライブラリを使用しています。 Pythonスクリプトを実行するたびにすべてのドキュメントが取得されますが、スクリプトの最後の実行から追加されたドキュメント、つまりget_changes関数のみを取得したいと考えています。Python - Cloudantは変更を取得します

回答を検索しましたが、見つけにくいとは思われません。

任意のヘルプのためのタク、

フィリッポ。

答えて

1

changes()メソッドを使用します。最後のシーケンスIDを追跡し、そこから再起動して、目に見えない変更のみを取得します。

# 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を渡すことができます。

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; 
} 

:あなたは(すべての変更ではなく)のみの新機能が追加をキャプチャしたい場合は

https://github.com/cloudant/python-cloudant/blob/master/src/cloudant/database.py#L458を参照してください、あなたはの線に沿って、DB設計ドキュメントのフィルタ機能を作成することができます変更フィードに適用する:

new_changes = db.changes(since=changes.last_seq, filter='myddoc/myfilter'): 
    # do stuff here 

しかし、おそらく簡単にすべての変更とフィルタをPythonコードで取得するのは簡単です。

フィルター機能:https://console.bluemix.net/docs/services/Cloudant/guides/replication_guide.html#filtered-replication

+0

はい、ポストの後に私はthaの方法を試してみましたが、それが正常に動作します。質問を編集する必要があるのは、最後のシーケンスIDの後にアップロードされた追加のドキュメントのみを取得することだからです。あなたが投稿したスクリプトは、設計書類と書類修正書類も戻しますが、私はそれらの結果に興味がありません。ちなみに、答えは –

+0

ありがとうありがとうxpqz、あなたのコメントは多くを助けます –

関連する問題