私はCloudantデータベースからドキュメントを収集するためにCloudantライブラリを使用しています。 Pythonスクリプトを実行するたびにすべてのドキュメントが取得されますが、スクリプトの最後の実行から追加されたドキュメント、つまりget_changes関数のみを取得したいと考えています。Python - Cloudantは変更を取得します
回答を検索しましたが、見つけにくいとは思われません。
任意のヘルプのためのタク、
フィリッポ。
私はCloudantデータベースからドキュメントを収集するためにCloudantライブラリを使用しています。 Pythonスクリプトを実行するたびにすべてのドキュメントが取得されますが、スクリプトの最後の実行から追加されたドキュメント、つまりget_changes関数のみを取得したいと考えています。Python - Cloudantは変更を取得します
回答を検索しましたが、見つけにくいとは思われません。
任意のヘルプのためのタク、
フィリッポ。
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コードで取得するのは簡単です。
はい、ポストの後に私はthaの方法を試してみましたが、それが正常に動作します。質問を編集する必要があるのは、最後のシーケンスIDの後にアップロードされた追加のドキュメントのみを取得することだからです。あなたが投稿したスクリプトは、設計書類と書類修正書類も戻しますが、私はそれらの結果に興味がありません。ちなみに、答えは –
ありがとうありがとうxpqz、あなたのコメントは多くを助けます –